From d485a54b599610de09e35e97d3844df3b9695575 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 22 Mar 2011 10:13:42 +0000 Subject: crash fix for Normalize All VGroups on a lattice without vgroups (probably other tools too - bug was in ED_vgroup_give_parray). Also fix for crashes running operators in bg mode by using setting poll functions: WM_OT_search_menu, MESH_OT_extrude_repeat, SCREEN_OT_new --- source/blender/editors/mesh/editmesh_tools.c | 2 +- source/blender/editors/object/object_vgroup.c | 17 +++++++++++------ source/blender/editors/screen/screen_ops.c | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) (limited to 'source/blender/editors') diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c index b4378829456..68a76f5363d 100644 --- a/source/blender/editors/mesh/editmesh_tools.c +++ b/source/blender/editors/mesh/editmesh_tools.c @@ -944,7 +944,7 @@ void MESH_OT_extrude_repeat(wmOperatorType *ot) /* api callbacks */ ot->exec= extrude_repeat_mesh; - ot->poll= ED_operator_editmesh; + ot->poll= ED_operator_editmesh_region_view3d; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index af18a709198..f1692c1150b 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -208,14 +208,19 @@ static int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_to Lattice *lt= (Lattice *)id; lt= (lt->editlatt)? lt->editlatt->latt: lt; - *dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw; - *dvert_arr= MEM_mallocN(sizeof(void*)*(*dvert_tot), "vgroup parray from me"); + if(lt->dvert) { + *dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw; + *dvert_arr= MEM_mallocN(sizeof(void*)*(*dvert_tot), "vgroup parray from me"); - for (i=0; i<*dvert_tot; i++) { - (*dvert_arr)[i] = lt->dvert + i; - } + for (i=0; i<*dvert_tot; i++) { + (*dvert_arr)[i] = lt->dvert + i; + } - return 1; + return 1; + } + else { + return 0; + } } } } diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 72cc4a48105..5236d67fa55 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3111,6 +3111,7 @@ static void SCREEN_OT_new(wmOperatorType *ot) /* api callbacks */ ot->exec= screen_new_exec; + ot->poll= WM_operator_winactive; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; -- cgit v1.2.3