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>2021-03-26 00:29:29 +0300
committerBastien Montagne <bastien@blender.org>2021-03-26 00:32:04 +0300
commitde1eeaa3d24ae44106f2084667f73c07ae30c0de (patch)
tree69deb80f84b91356abc2a2387e79c48fd56054bf
parent2281db72b015785b08a1713742902ad8174e8cda (diff)
LibOverride: fix bad ID relationships handling during resync.
Purely local IDs would not always be used as proper barriers when generating override hierarchy data, leading to imporperly trying to resync override IDs from other hierarchies, which would break/cause issues in case they would be duplicate overrides of the same linked data. Reported by Pablo from Sprite team, thanks.
-rw-r--r--source/blender/blenkernel/intern/lib_override.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index 43005afb677..a5164bd8448 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -437,6 +437,10 @@ static bool lib_override_hierarchy_dependencies_recursive_tag(LibOverrideGroupTa
}
/* We only consider IDs from the same library. */
ID *to_id = *to_id_entry->id_pointer.to;
+ if (!ID_IS_LINKED(to_id) && !ID_IS_OVERRIDE_LIBRARY(to_id)) {
+ /* Pure local data is a barrier of dependency in override cases. */
+ continue;
+ }
if (to_id != NULL && to_id->lib == id->lib) {
LibOverrideGroupTagData sub_data = *data;
sub_data.id_root = to_id;