[Bf-blender-cvs] [404b946ac0e] master: LibOverride: Fix again infinite loop in resync in some complex/degenerated cases.

Bastien Montagne noreply at git.blender.org
Tue Jun 1 17:37:27 CEST 2021


Commit: 404b946ac0e4f86e99471c2805570dfe3a8cc67e
Author: Bastien Montagne
Date:   Tue Jun 1 17:36:33 2021 +0200
Branches: master
https://developer.blender.org/rB404b946ac0e4f86e99471c2805570dfe3a8cc67e

LibOverride: Fix again infinite loop in resync in some complex/degenerated cases.

Broken in recent refactor of (recursive)resync, reported by studio,
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 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(



More information about the Bf-blender-cvs mailing list