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:
authorAndrea Weikert <elubie@gmx.net>2011-04-21 00:46:02 +0400
committerAndrea Weikert <elubie@gmx.net>2011-04-21 00:46:02 +0400
commit2d9c94604a375505f076da157875afc4186be35f (patch)
treec1a31f3f8439e793a63edeb1f4f89f4cac92ba99
parenta6c2d8680bd0288d00cc4728e67535a69e8fccfa (diff)
fix crash with lots of operators when running "blender -d". Easy case to reproduce, just try to delete default cube.
Temporary hack to prevent crasher, likely caused by rev. 36242.
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index c9e2567a45b..b2ed914ea2b 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1538,12 +1538,19 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
}
/* modal ui handler can be tagged to be freed */
+ /* XXX TODO - handler was free'd in wm_handler_ui_call
+ and memory could be written to in BLI_remlink.
+ As temporary solution preventing this by
+ making sure handler is still in the list.
+ */
+
if(handler->flag & WM_HANDLER_DO_FREE) {
- BLI_remlink(handlers, handler);
- wm_event_free_handler(handler);
+ if (BLI_findindex(handlers, handler) >= 0) {
+ BLI_remlink(handlers, handler);
+ wm_event_free_handler(handler);
+ }
}
-
/* XXX fileread case */
if(CTX_wm_window(C)==NULL)
return action;