From 9e9ebaba8dce88c739dd57540e1a61f06f29dee4 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 1 Feb 2021 14:06:15 +0100 Subject: Fix crash when creating lib overrides. Own mistake in recent commit rB2a81d948ad00c50. --- source/blender/blenkernel/intern/lib_override.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'source/blender/blenkernel/intern') 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( -- cgit v1.2.3