diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-03-22 13:13:42 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-03-22 13:13:42 +0300 |
commit | d485a54b599610de09e35e97d3844df3b9695575 (patch) | |
tree | 2f7682df9311de838d9006254ce95a5f2246df03 /source | |
parent | cfc904f3f1a00556032e12bb72395e261574669b (diff) |
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
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/mesh/editmesh_tools.c | 2 | ||||
-rw-r--r-- | source/blender/editors/object/object_vgroup.c | 17 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 1 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 1 |
4 files changed, 14 insertions, 7 deletions
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; diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 74c20457e1a..8aa89f6707d 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -1320,6 +1320,7 @@ static void WM_OT_call_menu(wmOperatorType *ot) ot->idname= "WM_OT_call_menu"; ot->exec= wm_call_menu_exec; + ot->poll= WM_operator_winactive; RNA_def_string(ot->srna, "name", "", BKE_ST_MAXNAME, "Name", "Name of the menu"); } |