From 36852b98cb6a29c5a172a2a3385a864aa223c7d3 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Wed, 19 Jan 2011 18:07:13 +0000 Subject: Bugfix #25613 Dropping file in Blender from pre 2.5 period caused eternal loop loading .blend files :) --- source/blender/windowmanager/intern/wm_event_system.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'source/blender/windowmanager') 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; } } } -- cgit v1.2.3