Revision: 42141
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42141
Author:   blendix
Date:     2011-11-24 20:24:03 +0000 (Thu, 24 Nov 2011)
Log Message:
-----------
Fix #29371: crash deleting objects in outliner. This was introduced in the
bugfix for #28467, it deleted outliner tree while still traversing it.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_outliner/outliner_tools.c

Modified: trunk/blender/source/blender/editors/space_outliner/outliner_tools.c
===================================================================
--- trunk/blender/source/blender/editors/space_outliner/outliner_tools.c        
2011-11-24 20:01:45 UTC (rev 42140)
+++ trunk/blender/source/blender/editors/space_outliner/outliner_tools.c        
2011-11-24 20:24:03 UTC (rev 42141)
@@ -297,8 +297,6 @@
        if(base==NULL) 
                base= object_in_scene((Object *)tselem->id, scene);
        if(base) {
-               SpaceOops *soops= CTX_wm_space_outliner(C);
-
                // check also library later
                if(scene->obedit==base->object) 
                        ED_object_exit_editmode(C, 
EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO);
@@ -306,15 +304,7 @@
                ED_base_object_free_and_unlink(CTX_data_main(C), scene, base);
                te->directdata= NULL;
                tselem->id= NULL;
-
-               /* XXX: tree management normally happens from draw_outliner(), 
but when
-                       you're clicking to fast on Delete object from context 
menu in
-                       outliner several mouse events can be handled in one 
cycle without
-                       handling notifiers/redraw which leads to deleting the 
same object twice.
-                       cleanup tree here to prevent such cases. */
-               outliner_cleanup_tree(soops);
        }
-
 }
 
 static void id_local_cb(bContext *UNUSED(C), Scene *UNUSED(scene), TreeElement 
*UNUSED(te), TreeStoreElem *UNUSED(tsep), TreeStoreElem *tselem)
@@ -579,6 +569,14 @@
        }
        else if(event==4) {
                outliner_do_object_operation(C, scene, soops, &soops->tree, 
object_delete_cb);
+
+               /* XXX: tree management normally happens from draw_outliner(), 
but when
+                       you're clicking to fast on Delete object from context 
menu in
+                       outliner several mouse events can be handled in one 
cycle without
+                       handling notifiers/redraw which leads to deleting the 
same object twice.
+                       cleanup tree here to prevent such cases. */
+               outliner_cleanup_tree(soops);
+
                DAG_scene_sort(bmain, scene);
                str= "Delete Objects";
                WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to