[Bf-blender-cvs] [c21488df5a8] blender2.8: Fix T55945: Outliner crash

Philipp Oeser noreply at git.blender.org
Thu Jul 12 13:40:12 CEST 2018


Commit: c21488df5a830af494d13b353e78cbf81de1595c
Author: Philipp Oeser
Date:   Thu Jul 12 13:37:29 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBc21488df5a830af494d13b353e78cbf81de1595c

Fix T55945: Outliner crash

crashed when using filtering and no item was found ('Blender File' mode)

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D3535

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

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

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

diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 9f6c944c914..28890e42139 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -2160,28 +2160,30 @@ void outliner_build_tree(Main *mainvar, Scene *scene, ViewLayer *view_layer, Spa
 		}
 		/* make hierarchy */
 		ten = soops->tree.first;
-		ten = ten->next;  /* first one is main */
-		while (ten) {
-			TreeElement *nten = ten->next, *par;
-			tselem = TREESTORE(ten);
-			lib = (Library *)tselem->id;
-			if (lib && lib->parent) {
-				par = (TreeElement *)lib->parent->id.newid;
-				if (tselem->id->tag & LIB_TAG_INDIRECT) {
-					/* Only remove from 'first level' if lib is not also directly used. */
-					BLI_remlink(&soops->tree, ten);
-					BLI_addtail(&par->subtree, ten);
-					ten->parent = par;
-				}
-				else {
-					/* Else, make a new copy of the libtree for our parent. */
-					TreeElement *dupten = outliner_add_library_contents(mainvar, soops, &par->subtree, lib);
-					if (dupten) {
-						dupten->parent = par;
+		if (ten != NULL) {
+			ten = ten->next;  /* first one is main */
+			while (ten) {
+				TreeElement *nten = ten->next, *par;
+				tselem = TREESTORE(ten);
+				lib = (Library *)tselem->id;
+				if (lib && lib->parent) {
+					par = (TreeElement *)lib->parent->id.newid;
+					if (tselem->id->tag & LIB_TAG_INDIRECT) {
+						/* Only remove from 'first level' if lib is not also directly used. */
+						BLI_remlink(&soops->tree, ten);
+						BLI_addtail(&par->subtree, ten);
+						ten->parent = par;
+					}
+					else {
+						/* Else, make a new copy of the libtree for our parent. */
+						TreeElement *dupten = outliner_add_library_contents(mainvar, soops, &par->subtree, lib);
+						if (dupten) {
+							dupten->parent = par;
+						}
 					}
 				}
+				ten = nten;
 			}
-			ten = nten;
 		}
 		/* restore newid pointers */
 		for (lib = mainvar->library.first; lib; lib = lib->id.next)



More information about the Bf-blender-cvs mailing list