From 054dbb833e15275e0e991e2c15e754a3e7583716 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Thu, 23 May 2019 10:17:43 +0200 Subject: Fix (unreported) missing remapping of proxy_from pointer. That would break proxy behavior after a library reload. The usual super-annoying loop-back pointers... At least that one is easily detectable and can be fixed in-place. Found while investigating T64764. --- source/blender/blenkernel/intern/library_remap.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source') diff --git a/source/blender/blenkernel/intern/library_remap.c b/source/blender/blenkernel/intern/library_remap.c index de9dbd06f23..7e3af8528cb 100644 --- a/source/blender/blenkernel/intern/library_remap.c +++ b/source/blender/blenkernel/intern/library_remap.c @@ -241,6 +241,13 @@ static int foreach_libblock_remap_callback(void *user_data, ID *id_self, ID **id if (!is_indirect || is_obj_proxy) { id_remap_data->status |= ID_REMAP_IS_LINKED_DIRECT; } + /* We need to remap proxy_from pointer of remapped proxy... sigh. */ + if (is_obj_proxy && new_id != NULL) { + Object *ob = (Object *)id; + if (ob->proxy == (Object *)new_id) { + ob->proxy->proxy_from = ob; + } + } } } -- cgit v1.2.3