[Bf-blender-cvs] [de1eeaa3d24] master: LibOverride: fix bad ID relationships handling during resync.

Bastien Montagne noreply at git.blender.org
Thu Mar 25 22:32:13 CET 2021


Commit: de1eeaa3d24ae44106f2084667f73c07ae30c0de
Author: Bastien Montagne
Date:   Thu Mar 25 22:29:29 2021 +0100
Branches: master
https://developer.blender.org/rBde1eeaa3d24ae44106f2084667f73c07ae30c0de

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.

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

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 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;



More information about the Bf-blender-cvs mailing list