diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-04-08 14:03:51 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-04-08 14:03:51 +0400 |
commit | 97a6965da9a671987df50570f8206c39569bac78 (patch) | |
tree | c992ca5b83fc9531637ab7ab9fc59ae17b62685c /source/blender/editors/mesh | |
parent | bb98f65112cd238a13fbbdc9143daab66d7d9daf (diff) |
fix for various crashes from incorrect poll functions.
- bevel had incorrect cancel when initialization failed which could crash (own mistake).
- main particle poll function didnt check if the area/region were NULL.
- some uv operators needed space image but didnt check for it. also use uv_ prefix for most operator functions.
Diffstat (limited to 'source/blender/editors/mesh')
-rw-r--r-- | source/blender/editors/mesh/editmesh_bevel.c | 22 | ||||
-rw-r--r-- | source/blender/editors/mesh/editmesh_inset.c | 12 |
2 files changed, 15 insertions, 19 deletions
diff --git a/source/blender/editors/mesh/editmesh_bevel.c b/source/blender/editors/mesh/editmesh_bevel.c index d061f5fbcc8..3f4c3d3a21c 100644 --- a/source/blender/editors/mesh/editmesh_bevel.c +++ b/source/blender/editors/mesh/editmesh_bevel.c @@ -91,14 +91,14 @@ static void edbm_bevel_update_header(wmOperator *op, bContext *C) } } -static int edbm_bevel_init(bContext *C, wmOperator *op, const bool is_modal) +static bool edbm_bevel_init(bContext *C, wmOperator *op, const bool is_modal) { Object *obedit = CTX_data_edit_object(C); BMEditMesh *em = BMEdit_FromObject(obedit); BevelData *opdata; if (em->bm->totvertsel == 0) { - return 0; + return false; } op->customdata = opdata = MEM_mallocN(sizeof(BevelData), "beveldata_mesh_operator"); @@ -122,10 +122,10 @@ static int edbm_bevel_init(bContext *C, wmOperator *op, const bool is_modal) v3d->twtype = 0; } - return 1; + return true; } -static int edbm_bevel_calc(wmOperator *op) +static bool edbm_bevel_calc(wmOperator *op) { BevelData *opdata = op->customdata; BMEditMesh *em = opdata->em; @@ -139,12 +139,9 @@ static int edbm_bevel_calc(wmOperator *op) EDBM_redo_state_restore(opdata->mesh_backup, em, false); } - if (!EDBM_op_init(em, &bmop, op, - "bevel geom=%hev offset=%f segments=%i vertex_only=%b", - BM_ELEM_SELECT, offset, segments, vertex_only)) - { - return 0; - } + EDBM_op_init(em, &bmop, op, + "bevel geom=%hev offset=%f segments=%i vertex_only=%b", + BM_ELEM_SELECT, offset, segments, vertex_only); BMO_op_exec(em->bm, &bmop); @@ -157,13 +154,13 @@ static int edbm_bevel_calc(wmOperator *op) /* no need to de-select existing geometry */ if (!EDBM_op_finish(em, &bmop, op, true)) - return 0; + return false; EDBM_mesh_normals_update(opdata->em); EDBM_update_generic(opdata->em, true, true); - return 1; + return true; } static void edbm_bevel_exit(bContext *C, wmOperator *op) @@ -207,7 +204,6 @@ static int edbm_bevel_cancel(bContext *C, wmOperator *op) static int edbm_bevel_exec(bContext *C, wmOperator *op) { if (!edbm_bevel_init(C, op, false)) { - edbm_bevel_exit(C, op); return OPERATOR_CANCELLED; } diff --git a/source/blender/editors/mesh/editmesh_inset.c b/source/blender/editors/mesh/editmesh_inset.c index b54797337f4..523f4e11b81 100644 --- a/source/blender/editors/mesh/editmesh_inset.c +++ b/source/blender/editors/mesh/editmesh_inset.c @@ -107,14 +107,14 @@ static void edbm_inset_update_header(wmOperator *op, bContext *C) } -static int edbm_inset_init(bContext *C, wmOperator *op, const bool is_modal) +static bool edbm_inset_init(bContext *C, wmOperator *op, const bool is_modal) { InsetData *opdata; Object *obedit = CTX_data_edit_object(C); BMEditMesh *em = BMEdit_FromObject(obedit); if (em->bm->totvertsel == 0) { - return 0; + return false; } op->customdata = opdata = MEM_mallocN(sizeof(InsetData), "inset_operator_data"); @@ -141,7 +141,7 @@ static int edbm_inset_init(bContext *C, wmOperator *op, const bool is_modal) v3d->twtype = 0; } - return 1; + return true; } static void edbm_inset_exit(bContext *C, wmOperator *op) @@ -183,7 +183,7 @@ static int edbm_inset_cancel(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } -static int edbm_inset_calc(wmOperator *op) +static bool edbm_inset_calc(wmOperator *op) { InsetData *opdata; BMEditMesh *em; @@ -233,11 +233,11 @@ static int edbm_inset_calc(wmOperator *op) } if (!EDBM_op_finish(em, &bmop, op, true)) { - return 0; + return false; } else { EDBM_update_generic(em, true, true); - return 1; + return true; } } |