Fix crash entering edit mode on linked duplicate meshes with

dupliverts. The flag mode & OB_MODE_EDIT only indicates that
this object is being edited by the user, not if the mesh is
in editmode or not, it should check for the existence of
me->edit_mesh. Also corrected two other places for this.
This commit is contained in:
2010-04-04 10:37:47 +00:00
parent 5de041c51f
commit a5156d139e
3 changed files with 4 additions and 4 deletions

View File

@@ -837,7 +837,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, fl
/* mballs have a different dupli handling */
if(ob->type!=OB_MBALL) ob->flag |= OB_DONE; /* doesnt render */
if(par->mode & OB_MODE_EDIT) {
if(me->edit_mesh) {
dm->foreachMappedVert(dm, vertex_dupli__mapFunc, (void*) &vdd);
}
else {
@@ -1048,7 +1048,7 @@ static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, floa
else go= go->next; /* group loop */
}
if(par->mode & OB_MODE_EDIT) {
if(em) {
MEM_freeN(mface);
MEM_freeN(mvert);
}

View File

@@ -2502,7 +2502,7 @@ void object_handle_update(Scene *scene, Object *ob)
BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS);
// here was vieweditdatamask? XXX
if(ob->mode & OB_MODE_EDIT) {
if(em) {
makeDerivedMesh(scene, ob, em, CD_MASK_BAREMESH);
BKE_mesh_end_editmesh(ob->data, em);
} else

View File

@@ -485,7 +485,7 @@ static void rna_Object_active_material_index_set(PointerRNA *ptr, int value)
Object *ob= (Object*)ptr->id.data;
ob->actcol= value+1;
if((ob->mode & OB_MODE_EDIT) && ob->type==OB_MESH) {
if(ob->type==OB_MESH) {
Mesh *me= ob->data;
if(me->edit_mesh)