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>2022-07-12 16:34:40 +0300
committerBastien Montagne <bastien@blender.org>2022-07-12 16:34:40 +0300
commit4a445c8dc0edfe793e547ac49194df72c372f95a (patch)
tree335bd404012b647529bb5b34ecb0468d9806eaf4 /source/blender
parentf72cedffb63e08abc71ae1c6d31408457b1005a9 (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.cc11
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) {