[Bf-blender-cvs] [054dbb833e1] blender2.7: Fix (unreported) missing remapping of proxy_from pointer.

Bastien Montagne noreply at git.blender.org
Thu May 23 10:20:10 CEST 2019


Commit: 054dbb833e15275e0e991e2c15e754a3e7583716
Author: Bastien Montagne
Date:   Thu May 23 10:17:43 2019 +0200
Branches: blender2.7
https://developer.blender.org/rB054dbb833e15275e0e991e2c15e754a3e7583716

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.

===================================================================

M	source/blender/blenkernel/intern/library_remap.c

===================================================================

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;
+				}
+			}
 		}
 	}



More information about the Bf-blender-cvs mailing list