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:
authorTon Roosendaal <ton@blender.org>2011-01-19 21:07:13 +0300
committerTon Roosendaal <ton@blender.org>2011-01-19 21:07:13 +0300
commit36852b98cb6a29c5a172a2a3385a864aa223c7d3 (patch)
tree27d0705f480893f184e34a82c8b6dd253281745b /source/blender/windowmanager
parentd0f4e7767ecaf2158a7a5403537c78d8fa4439a4 (diff)
Bugfix #25613
Dropping file in Blender from pre 2.5 period caused eternal loop loading .blend files :)
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index be6700f2ea1..3c312a0c2b3 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1470,21 +1470,26 @@ static int wm_handlers_do(bContext *C, wmEvent *event, ListBase *handlers)
if(event->custom==EVT_DATA_LISTBASE) {
ListBase *lb= (ListBase *)event->customdata;
wmDrag *drag;
+
for(drag= lb->first; drag; drag= drag->next) {
if(drop->poll(C, drag, event)) {
+
drop->copy(drag, drop);
+ /* free the drags before calling operator */
+ BLI_freelistN(event->customdata);
+ event->customdata= NULL;
+ event->custom= 0;
+
WM_operator_name_call(C, drop->ot->idname, drop->opcontext, drop->ptr);
- //wm_operator_invoke(C, drop->ot, event, drop->ptr, NULL, FALSE);
action |= WM_HANDLER_BREAK;
/* XXX fileread case */
if(CTX_wm_window(C)==NULL)
return action;
- BLI_freelistN(event->customdata);
- event->customdata= NULL;
- event->custom= 0;
+ /* escape from drag loop, got freed */
+ break;
}
}
}