From 0f88a3546cbd020af3f5c47b049ae4ecc6bc54ba Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Fri, 7 Oct 2016 10:20:40 +0200 Subject: [PATCH] Datablock management: remove 'proxy_from' pointer from 'is ID used' checks. Pretty much same reason as for the 'from' pointer of shapekeys - runtime data creating loops and 'ghost' dependencies between datablocks. We need to handle them in cases like remapping, but whall not take them into account to check dependencies between datablocks... :/ --- source/blender/blenkernel/intern/library_query.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/blenkernel/intern/library_query.c b/source/blender/blenkernel/intern/library_query.c index 85ddd4dcbb3..08f9c439a7a 100644 --- a/source/blender/blenkernel/intern/library_query.c +++ b/source/blender/blenkernel/intern/library_query.c @@ -1036,6 +1036,10 @@ static int foreach_libblock_id_users_callback(void *user_data, ID *self_id, ID * if ((GS(self_id->name) == ID_KE) && (((Key *)self_id)->from == *id_p)) { return IDWALK_RET_NOP; } + /* XXX another hack, for similar reasons as above one. */ + if ((GS(self_id->name) == ID_OB) && (((Object *)self_id)->proxy_from == (Object *)*id_p)) { + return IDWALK_RET_NOP; + } if (*id_p && (*id_p == iter->id)) { #if 0