[Bf-blender-cvs] [4153ff3] master: Fix T44201: Crash Deleting Hierarchy in Outliner

Bastien Montagne noreply at git.blender.org
Tue Mar 31 08:39:40 CEST 2015


Commit: 4153ff3610241cc4e4a73326eca49ee2797ee125
Author: Bastien Montagne
Date:   Tue Mar 31 08:36:48 2015 +0200
Branches: master
https://developer.blender.org/rB4153ff3610241cc4e4a73326eca49ee2797ee125

Fix T44201: Crash Deleting Hierarchy  in Outliner

Typical error using '->next' member of a freed linked list item. A bit trickier
even here, since we have some recursion...

Trivial fix for nasty crasher, safe for 2.74 imho?

===================================================================

M	source/blender/editors/space_outliner/outliner_tools.c

===================================================================

diff --git a/source/blender/editors/space_outliner/outliner_tools.c b/source/blender/editors/space_outliner/outliner_tools.c
index 64e0058..fc6717f 100644
--- a/source/blender/editors/space_outliner/outliner_tools.c
+++ b/source/blender/editors/space_outliner/outliner_tools.c
@@ -694,23 +694,26 @@ static void outliner_do_data_operation(SpaceOops *soops, int type, int event, Li
 	}
 }
 
-static void outline_delete_hierarchy(bContext *C, Scene *scene, Base *base)
+static Base *outline_delete_hierarchy(bContext *C, Scene *scene, Base *base)
 {
-	Base *child_base;
+	Base *child_base, *base_next;
 	Object *parent;
 
 	if (!base) {
-	    return;
+	    return NULL;
 	}
 
-	for (child_base = scene->base.first; child_base; child_base = child_base->next) {
+	for (child_base = scene->base.first; child_base; child_base = base_next) {
+		base_next = child_base->next;
 		for (parent = child_base->object->parent; parent && (parent != base->object); parent = parent->parent);
 		if (parent) {
-			outline_delete_hierarchy(C, scene, child_base);
+			base_next = outline_delete_hierarchy(C, scene, child_base);
 		}
 	}
 
+	base_next = base->next;
 	ED_base_object_free_and_unlink(CTX_data_main(C), scene, base);
+	return base_next;
 }
 
 static void object_delete_hierarchy_cb(




More information about the Bf-blender-cvs mailing list