[Bf-blender-cvs] [ccecc409e4e] master: Fix T62098: Outliner: Delete hierarchy crash.

Bastien Montagne noreply at git.blender.org
Fri Mar 1 23:05:16 CET 2019


Commit: ccecc409e4eae160609bfd7e6803cda2afd0c0eb
Author: Bastien Montagne
Date:   Fri Mar 1 23:02:25 2019 +0100
Branches: master
https://developer.blender.org/rBccecc409e4eae160609bfd7e6803cda2afd0c0eb

Fix T62098: Outliner: Delete hierarchy crash.

Stupid mistake in own logic would prevent first deleted ID to be
properly unlinked from rest of .blend file before its deletion...

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

M	source/blender/blenkernel/intern/library_remap.c

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

diff --git a/source/blender/blenkernel/intern/library_remap.c b/source/blender/blenkernel/intern/library_remap.c
index e965e2a6aac..c4cd14e027e 100644
--- a/source/blender/blenkernel/intern/library_remap.c
+++ b/source/blender/blenkernel/intern/library_remap.c
@@ -956,6 +956,7 @@ static void id_delete(Main *bmain, const bool do_tagged_deletion)
 {
 	const int tag = LIB_TAG_DOIT;
 	ListBase *lbarray[MAX_LIBARRAY];
+	Link dummy_link = {0};
 	int base_count, i;
 
 	/* Used by batch tagged deletion, when we call BKE_id_free then, id is no more in Main database,
@@ -1000,11 +1001,8 @@ static void id_delete(Main *bmain, const bool do_tagged_deletion)
 				}
 			}
 			if (last_remapped_id == NULL) {
-				last_remapped_id = tagged_deleted_ids.first;
-				if (last_remapped_id == NULL) {
-					BLI_assert(!keep_looping);
-					break;
-				}
+				dummy_link.next = tagged_deleted_ids.first;
+				last_remapped_id = (ID *)(&dummy_link);
 			}
 			for (id = last_remapped_id->next; id; id = id->next) {
 				/* Will tag 'never NULL' users of this ID too.



More information about the Bf-blender-cvs mailing list