From 706b690ec60daac01195fd6bc30db5565303bb7e Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 23 Jul 2020 17:02:30 +0200 Subject: Fix (unreported) bad handling of pointers in overrides with shapekeys. --- source/blender/blenkernel/intern/lib_override.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c index 421a53b8e8d..707498d0d6f 100644 --- a/source/blender/blenkernel/intern/lib_override.c +++ b/source/blender/blenkernel/intern/lib_override.c @@ -1453,6 +1453,11 @@ void BKE_lib_override_library_update(Main *bmain, ID *local) /* This is some kind of hard-coded 'always enforced override'... */ BKE_lib_id_swap(bmain, &local_key->id, &tmp_key->id); tmp_key->id.flag |= (local_key->id.flag & LIB_EMBEDDED_DATA_LIB_OVERRIDE); + /* The swap of local and tmp_id inverted those pointers, we need to redefine proper relationships. */ + *BKE_key_from_id_p(local) = local_key; + *BKE_key_from_id_p(tmp_id) = tmp_key; + local_key->from = local; + tmp_key->from = tmp_id; } /* Again, horribly inn-efficient in our case, we need something off-Main -- cgit v1.2.3