From 36184f739264387a932c21424964d01c33d793b0 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Tue, 18 Dec 2018 20:36:57 -0200 Subject: Fix T57816: Crash when deleting recently orphaned collection We were never removing the parent collection from a collection upon removal of the parent. Reviewers: mont29 Differential Revision: https://developer.blender.org/D4099 --- source/blender/blenkernel/intern/collection.c | 5 +++-- source/blender/blenkernel/intern/library_query.c | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'source/blender') diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c index 33287d5a2f8..a3782deecad 100644 --- a/source/blender/blenkernel/intern/collection.c +++ b/source/blender/blenkernel/intern/collection.c @@ -683,8 +683,9 @@ static void collection_missing_parents_remove(Collection *collection) { for (CollectionParent *parent = collection->parents.first, *parent_next; parent != NULL; parent = parent_next) { parent_next = parent->next; - - if (!collection_find_child(parent->collection, collection)) { + if ((parent->collection == NULL) || + !collection_find_child(parent->collection, collection)) + { BLI_freelinkN(&collection->parents, parent); } } diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c index 9428e1508a4..ab50cf8b0a8 100644 --- a/source/blender/blenkernel/intern/library_query.c +++ b/source/blender/blenkernel/intern/library_query.c @@ -747,6 +747,9 @@ void BKE_library_foreach_ID_link(Main *bmain, ID *id, LibraryIDLinkCallback call for (CollectionChild *child = collection->children.first; child; child = child->next) { CALLBACK_INVOKE(child->collection, IDWALK_CB_USER); } + for (CollectionParent *parent = collection->parents.first; parent; parent = parent->next) { + CALLBACK_INVOKE(parent->collection, IDWALK_CB_NOP); + } break; } -- cgit v1.2.3