Unlike the other types of objects shown in the file, (armature, curve,
mball and lattice), meshes has its editing member dupalloced.
So, as shown in the comment, the developer needs to be careful when
working with the BMesh of edit_mesh, since its pointer is shared and
cannot be changed.
However, it is not just BMesh that the developer needs to be careful
about. Other pointers like looptris and bb_cage cannot be
recalculated in mesh_eval, as the pointer can change and this would
cause a memory leak.
This makes developers think that they should not work on the evaluated
mesh edit_mesh. But it is confusing that the members mesh_eval_final
and mesh_eval_cage are only computed in the editmesh of the evaluated
mesh.
So, what should be calculated for the edit_mesh of the mesh_eval and
what should be calculated for the edit_mesh of the original mesh?
This patch proposes to simplify things by not dupalloc edit_mesh.
Note: theoretically mesh_eval_final and mesh_eval_cage should be a
member of the object and not the mesh since it is expected to change
with the modifiers even if the mesh is linked.