diff options
author | Bastien Montagne <bastien@blender.org> | 2022-07-12 16:34:40 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2022-07-12 16:34:40 +0300 |
commit | 4a445c8dc0edfe793e547ac49194df72c372f95a (patch) | |
tree | 335bd404012b647529bb5b34ecb0468d9806eaf4 /source/blender | |
parent | f72cedffb63e08abc71ae1c6d31408457b1005a9 (diff) |
LibOverride: Fix some issues from.revealed by recent previous commit.
rB57097e9a8515 did not properly consider case where you have more than
one override for a same reference linked ID.
Also adds more security checks around shapekeys, since match between
override and its linked reference is never ensured either way (fixes a
crash reported by @Rik from Blender studio).
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/lib_override.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/lib_override.cc b/source/blender/blenkernel/intern/lib_override.cc index 1969ec9196c..aa3210b64ad 100644 --- a/source/blender/blenkernel/intern/lib_override.cc +++ b/source/blender/blenkernel/intern/lib_override.cc @@ -455,8 +455,10 @@ static void lib_override_remapper_overrides_add(IDRemapper *id_remapper, Key *reference_key, *local_key = nullptr; if ((reference_key = BKE_key_from_id(reference_id)) != nullptr) { - local_key = BKE_key_from_id(reference_id->newid); - BLI_assert(local_key != nullptr); + if (reference_id->newid != nullptr) { + local_key = BKE_key_from_id(reference_id->newid); + BLI_assert(local_key != nullptr); + } BKE_id_remapper_add(id_remapper, &reference_key->id, &local_key->id); } @@ -599,8 +601,9 @@ bool BKE_lib_override_library_create_from_tag(Main *bmain, other_id->override_library->hierarchy_root == id_hierarchy_root) { reference_id = other_id->override_library->reference; ID *local_id = reference_id->newid; - BLI_assert(other_id == local_id); - lib_override_remapper_overrides_add(id_remapper, reference_id, local_id); + if (other_id == local_id) { + lib_override_remapper_overrides_add(id_remapper, reference_id, local_id); + } } } if (other_id != id) { |