[Bf-blender-cvs] [9e9ebaba8dc] master: Fix crash when creating lib overrides.

Bastien Montagne noreply at git.blender.org
Mon Feb 1 14:09:53 CET 2021


Commit: 9e9ebaba8dce88c739dd57540e1a61f06f29dee4
Author: Bastien Montagne
Date:   Mon Feb 1 14:06:15 2021 +0100
Branches: master
https://developer.blender.org/rB9e9ebaba8dce88c739dd57540e1a61f06f29dee4

Fix crash when creating lib overrides.

Own mistake in recent commit rB2a81d948ad00c50.

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

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

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

diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index 7df0e08d405..7ccf53546b8 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -470,12 +470,12 @@ static bool lib_override_hierarchy_dependencies_recursive_tag(Main *bmain,
  * We currently only consider Collections and Objects (that are not used as bone shapes) as valid
  * boundary IDs to define an override group.
  */
-static void lib_override_linked_group_tag(Main *bmain,
-                                          ID *id,
-                                          const uint tag,
-                                          const uint missing_tag)
+static void lib_override_linked_group_tag(
+    Main *bmain, ID *id, const uint tag, const uint missing_tag, const bool create_bmain_relations)
 {
-  BKE_main_relations_create(bmain, 0);
+  if (create_bmain_relations) {
+    BKE_main_relations_create(bmain, 0);
+  }
 
   if (ELEM(GS(id->name), ID_OB, ID_GR)) {
     LibOverrideGroupTagData data = {.id_root = id, .tag = tag, .missing_tag = missing_tag};
@@ -498,7 +498,9 @@ static void lib_override_linked_group_tag(Main *bmain,
 
   lib_override_hierarchy_dependencies_recursive_tag(bmain, id, tag, missing_tag);
 
-  BKE_main_relations_free(bmain);
+  if (create_bmain_relations) {
+    BKE_main_relations_free(bmain);
+  }
 }
 
 static int lib_override_local_group_tag_cb(LibraryIDLinkCallbackData *cb_data)
@@ -582,9 +584,11 @@ static bool lib_override_library_create_do(Main *bmain, ID *id_root)
 
   BKE_main_relations_create(bmain, 0);
 
-  lib_override_linked_group_tag(bmain, id_root, LIB_TAG_DOIT, LIB_TAG_MISSING);
+  lib_override_linked_group_tag(bmain, id_root, LIB_TAG_DOIT, LIB_TAG_MISSING, false);
   lib_override_hierarchy_dependencies_recursive_tag(bmain, id_root, LIB_TAG_DOIT, LIB_TAG_MISSING);
 
+  BKE_main_relations_free(bmain);
+
   return BKE_lib_override_library_create_from_tag(bmain);
 }
 
@@ -781,7 +785,7 @@ bool BKE_lib_override_library_resync(Main *bmain, Scene *scene, ViewLayer *view_
 
   lib_override_local_group_tag(bmain, id_root, LIB_TAG_DOIT, LIB_TAG_MISSING);
 
-  lib_override_linked_group_tag(bmain, id_root_reference, LIB_TAG_DOIT, LIB_TAG_MISSING);
+  lib_override_linked_group_tag(bmain, id_root_reference, LIB_TAG_DOIT, LIB_TAG_MISSING, true);
 
   /* Make a mapping 'linked reference IDs' -> 'Local override IDs' of existing overrides. */
   GHash *linkedref_to_old_override = BLI_ghash_new(



More information about the Bf-blender-cvs mailing list