diff options
author | Bastien Montagne <bastien@blender.org> | 2021-06-01 18:36:33 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2021-06-01 18:37:22 +0300 |
commit | 404b946ac0e4f86e99471c2805570dfe3a8cc67e (patch) | |
tree | fa7f2e23585114b2110aa8a0dae6075bc5eb6d92 /source/blender/blenkernel/intern/lib_override.c | |
parent | 6583fb67c6e1e5d714d723a09312e9dd25e02152 (diff) |
LibOverride: Fix again infinite loop in resync in some complex/degenerated cases.
Broken in recent refactor of (recursive)resync, reported by studio,
thanks.
Diffstat (limited to 'source/blender/blenkernel/intern/lib_override.c')
-rw-r--r-- | source/blender/blenkernel/intern/lib_override.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c index 4d5085d6ad5..9a2887a1d16 100644 --- a/source/blender/blenkernel/intern/lib_override.c +++ b/source/blender/blenkernel/intern/lib_override.c @@ -1473,16 +1473,16 @@ static void lib_override_library_main_resync_on_library_indirect_level( } int level = 0; - id = lib_override_library_main_resync_find_root_recurse(id, &level); - BLI_assert(ID_IS_OVERRIDE_LIBRARY_REAL(id)); - do_continue = true; - /* In complex non-supported cases, with several different override hierarchies sharing * relations between each-other, we may end up not actually updating/replacing the given * root id (see e.g. pro/shots/110_rextoria/110_0150_A/110_0150_A.anim.blend of sprites * project repository, r2687). * This can lead to infinite loop here, at least avoid this. */ id->tag &= ~LIB_TAG_LIB_OVERRIDE_NEED_RESYNC; + id = lib_override_library_main_resync_find_root_recurse(id, &level); + id->tag &= ~LIB_TAG_LIB_OVERRIDE_NEED_RESYNC; + BLI_assert(ID_IS_OVERRIDE_LIBRARY_REAL(id)); + do_continue = true; CLOG_INFO(&LOG, 2, "Resyncing %s (%p)...", id->name, id->lib); const bool success = BKE_lib_override_library_resync( |