Commit: c2791777bd8bd4a0375ada74b84c2142c6ce73cc
Author: Bastien Montagne
Date:   Mon Oct 29 10:49:46 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBc2791777bd8bd4a0375ada74b84c2142c6ce73cc

Fix stupid multiple-call of same function in Collections remapping code.

Related to T57372: Second full scene copy crashes on deletion (fixes
deleting second copy, but now it crashes on deleting the first copy...).

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

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

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

diff --git a/source/blender/blenkernel/intern/collection.c 
b/source/blender/blenkernel/intern/collection.c
index 51e508d7744..e6546d4454d 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -654,11 +654,10 @@ void BKE_collections_object_remove_nulls(Main *bmain)
  * Remove all NULL children from parent objects of changed old_collection.
  * This is used for library remapping, where these pointers have been set to 
NULL.
  * Otherwise this should never happen.
+ * Note: caller must ensure BKE_main_collection_sync_remap() is called 
afterwards!
  */
 void BKE_collections_child_remove_nulls(Main *bmain, Collection 
*old_collection)
 {
-       bool changed = false;
-
        for (CollectionParent *cparent = old_collection->parents.first, *cnext; 
cparent; cparent = cnext) {
                Collection *parent = cparent->collection;
                cnext = cparent->next;
@@ -668,19 +667,13 @@ void BKE_collections_child_remove_nulls(Main *bmain, 
Collection *old_collection)
 
                        if (child->collection == NULL) {
                                BLI_freelinkN(&parent->children, child);
-                               changed = true;
                        }
                }
 
                if (!collection_find_child(parent, old_collection)) {
                        BLI_freelinkN(&old_collection->parents, cparent);
-                       changed = true;
                }
        }
-
-       if (changed) {
-               BKE_main_collection_sync_remap(bmain);
-       }
 }
 
 /**
diff --git a/source/blender/blenkernel/intern/library_remap.c 
b/source/blender/blenkernel/intern/library_remap.c
index 9e3001de572..114159debe3 100644
--- a/source/blender/blenkernel/intern/library_remap.c
+++ b/source/blender/blenkernel/intern/library_remap.c
@@ -326,9 +326,9 @@ static void 
libblock_remap_data_postprocess_collection_update(
         Main *bmain, Collection *old_collection, Collection *new_collection)
 {
        if (new_collection == NULL) {
-                /* In case we unlinked old_collection (new_collection is 
NULL), we need
-                 * to remove any collection children that have been set to 
NULL in the
-                 * because of pointer replacement. */
+               /* In case we unlinked old_collection (new_collection is NULL), 
we need
+                * to remove any collection children that have been set to NULL 
in the
+                * because of pointer replacement. */
                if (old_collection != NULL) {
                        BKE_collections_child_remove_nulls(bmain, 
old_collection);
                }

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

Reply via email to