[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34404] trunk/blender/source/blender/ windowmanager/intern/wm_event_system.c: Bugfix #25613

Ton Roosendaal ton at blender.org
Wed Jan 19 19:07:13 CET 2011


Revision: 34404
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34404
Author:   ton
Date:     2011-01-19 18:07:13 +0000 (Wed, 19 Jan 2011)
Log Message:
-----------
Bugfix #25613

Dropping file in Blender from pre 2.5 period caused eternal loop
loading .blend files :)

Modified Paths:
--------------
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-01-19 17:11:02 UTC (rev 34403)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-01-19 18:07:13 UTC (rev 34404)
@@ -1470,21 +1470,26 @@
 						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;
 								}
 							}
 						}




More information about the Bf-blender-cvs mailing list