Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <bastien@blender.org>2020-08-11 19:46:47 +0300
committerBastien Montagne <bastien@blender.org>2020-08-11 19:46:47 +0300
commitd2c150772a432091ac128e0fc01aef3b997e8bfb (patch)
tree72b57be3d26059acee7e864826cb5a5f038aafc6
parenteca062b9cbea5b5e30345ae5de1cf5a089003a19 (diff)
Fix T79692: Full copy of scene makes Blender freeze if there is content directly in the master collection.
Old and new collections are the same data in Master collection case here, so we cannot consider the `gobject` listbase of `collection_old` as always immutable.
-rw-r--r--source/blender/blenkernel/intern/collection.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c
index 6118325c231..5c618c8e9ce 100644
--- a/source/blender/blenkernel/intern/collection.c
+++ b/source/blender/blenkernel/intern/collection.c
@@ -408,9 +408,9 @@ static Collection *collection_duplicate_recursive(Main *bmain,
}
if (do_objects) {
- /* We can loop on collection_old's objects, that list is currently identical the collection_new
- * objects, and won't be changed here. */
- LISTBASE_FOREACH (CollectionObject *, cob, &collection_old->gobject) {
+ /* We can loop on collection_old's objects, but have to consider it mutable because with master
+ * collections collection_old and collection_new are the same data here. */
+ LISTBASE_FOREACH_MUTABLE (CollectionObject *, cob, &collection_old->gobject) {
Object *ob_old = cob->ob;
Object *ob_new = (Object *)ob_old->id.newid;