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>2016-06-21 08:02:10 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-06-21 08:02:10 +0300
commit7cbd1285a5522971c9e46e417d63bac8c07bc1a4 (patch)
treea69de7073799a77d04200b99a3f53aed9f417ad9 /source/blender/windowmanager/intern
parent994dd5c7c151d42d81f20a7aebaa7dee33814089 (diff)
Fix T48196: Crash enabling modal operator in exec
Not good practice, but better not crash.
Diffstat (limited to 'source/blender/windowmanager/intern')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 4f9d48450f6..f632dd9aff4 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -793,7 +793,10 @@ static int wm_operator_exec(bContext *C, wmOperator *op, const bool repeat, cons
wm_operator_finished(C, op, repeat);
}
else if (repeat == 0) {
- WM_operator_free(op);
+ /* warning: modal from exec is bad practice, but avoid crashing. */
+ if (retval & (OPERATOR_FINISHED | OPERATOR_CANCELLED)) {
+ WM_operator_free(op);
+ }
}
return retval | OPERATOR_HANDLED;