[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