Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-08-25 20:42:42 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-08-25 20:42:42 +0400
commita244a787de9d3353efdd4dd42794e14b830b3ddb (patch)
tree2a2055c36cad2d43a2d53f195409b2e591d31ce7 /source/blender/windowmanager
parent88ba2504c7269c408f400de6637545333641ee1f (diff)
sanity checks on operator exec/modal/invoke return values.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c5
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c10
2 files changed, 12 insertions, 3 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 413ff181f11..27586525253 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -531,6 +531,7 @@ static int wm_operator_exec(bContext *C, wmOperator *op, int repeat)
wm->op_undo_depth++;
retval= op->type->exec(C, op);
+ OPERATOR_RETVAL_CHECK(retval);
if(op->type->flag & OPTYPE_UNDO && CTX_wm_manager(C) == wm)
wm->op_undo_depth--;
@@ -690,6 +691,7 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P
wm->op_undo_depth++;
retval= op->type->invoke(C, op, event);
+ OPERATOR_RETVAL_CHECK(retval);
if(op->type->flag & OPTYPE_UNDO && CTX_wm_manager(C) == wm)
wm->op_undo_depth--;
@@ -699,6 +701,7 @@ static int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, P
wm->op_undo_depth++;
retval= op->type->exec(C, op);
+ OPERATOR_RETVAL_CHECK(retval);
if(op->type->flag & OPTYPE_UNDO && CTX_wm_manager(C) == wm)
wm->op_undo_depth--;
@@ -917,6 +920,7 @@ int WM_operator_call_py(bContext *C, wmOperatorType *ot, int context, PointerRNA
wm->op_undo_depth++;
retval= op->type->exec(C, op);
+ OPERATOR_RETVAL_CHECK(retval);
if(op->type->flag & OPTYPE_UNDO && CTX_wm_manager(C) == wm)
wm->op_undo_depth--;
@@ -1203,6 +1207,7 @@ static int wm_handler_operator_call(bContext *C, ListBase *handlers, wmEventHand
wm->op_undo_depth++;
retval= ot->modal(C, op, event);
+ OPERATOR_RETVAL_CHECK(retval);
if(ot->flag & OPTYPE_UNDO && CTX_wm_manager(C) == wm)
wm->op_undo_depth--;
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index d794685ea70..a4efa8fff84 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -213,6 +213,7 @@ static int wm_macro_exec(bContext *C, wmOperator *op)
if(opm->type->exec) {
retval= opm->type->exec(C, opm);
+ OPERATOR_RETVAL_CHECK(retval);
if (retval & OPERATOR_FINISHED) {
MacroData *md = op->customdata;
@@ -237,6 +238,8 @@ static int wm_macro_invoke_internal(bContext *C, wmOperator *op, wmEvent *event,
else if(opm->type->exec)
retval= opm->type->exec(C, opm);
+ OPERATOR_RETVAL_CHECK(retval);
+
BLI_movelisttolist(&op->reports->list, &opm->reports->list);
if (retval & OPERATOR_FINISHED) {
@@ -265,6 +268,7 @@ static int wm_macro_modal(bContext *C, wmOperator *op, wmEvent *event)
printf("macro error, calling NULL modal()\n");
else {
retval = opm->type->modal(C, opm, event);
+ OPERATOR_RETVAL_CHECK(retval);
/* if this one is done but it's not the last operator in the macro */
if ((retval & OPERATOR_FINISHED) && opm->next) {
@@ -655,7 +659,9 @@ int WM_menu_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
printf("WM_menu_invoke: %s \"%s\" is not an enum property\n", op->type->idname, RNA_property_identifier(prop));
}
else if (RNA_property_is_set(op->ptr, RNA_property_identifier(prop))) {
- return op->type->exec(C, op);
+ const int retval= op->type->exec(C, op);
+ OPERATOR_RETVAL_CHECK(retval);
+ return retval;
}
else {
pup= uiPupMenuBegin(C, op->type->name, ICON_NONE);
@@ -2345,7 +2351,6 @@ static void gesture_circle_apply(bContext *C, wmOperator *op)
if(op->type->exec)
op->type->exec(C, op);
-
#ifdef GESTURE_MEMORY
circle_select_size= rect->xmax;
#endif
@@ -2566,7 +2571,6 @@ static void gesture_lasso_apply(bContext *C, wmOperator *op)
if(op->type->exec)
op->type->exec(C, op);
-
}
int WM_gesture_lasso_modal(bContext *C, wmOperator *op, wmEvent *event)