[Bf-blender-cvs] [e007552] master: Fix Py's IDs user mapping: do not consider proxy_from here.

Bastien Montagne noreply at git.blender.org
Thu Sep 15 10:17:03 CEST 2016


Commit: e007552442634ea3b016f8552a4394b95272f58d
Author: Bastien Montagne
Date:   Thu Sep 15 10:11:47 2016 +0200
Branches: master
https://developer.blender.org/rBe007552442634ea3b016f8552a4394b95272f58d

Fix Py's IDs user mapping: do not consider proxy_from here.

This is internal pointer helper for scene evaluation and tools, it's not exposed to bpy API anyway,
and can give false 'dependency cycles' in bpy.data.user_map() results.

Found by sybren in his Splode work.

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

M	source/blender/python/intern/bpy_rna_id_collection.c

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

diff --git a/source/blender/python/intern/bpy_rna_id_collection.c b/source/blender/python/intern/bpy_rna_id_collection.c
index 3e50e79..95c2b3a 100644
--- a/source/blender/python/intern/bpy_rna_id_collection.c
+++ b/source/blender/python/intern/bpy_rna_id_collection.c
@@ -40,6 +40,7 @@
 #include "BKE_library_query.h"
 
 #include "DNA_ID.h"
+#include "DNA_object_types.h"
 
 #include "bpy_util.h"
 #include "bpy_rna_id_collection.h"
@@ -81,7 +82,7 @@ static bool id_check_type(const ID *id, const BLI_bitmap *types_bitmap)
 }
 
 static int foreach_libblock_id_user_map_callback(
-        void *user_data, ID *UNUSED(self_id), ID **id_p, int UNUSED(cb_flag))
+        void *user_data, ID *self_id, ID **id_p, int UNUSED(cb_flag))
 {
 	IDUserMapData *data = user_data;
 
@@ -93,6 +94,11 @@ static int foreach_libblock_id_user_map_callback(
 			}
 		}
 
+		if ((GS(self_id->name) == ID_OB) && (id_p == (ID **)&((Object *)self_id)->proxy_from)) {
+			/* We skip proxy_from here, since it some internal pointer which is not irrelevant info for py/API level. */
+			return IDWALK_RET_NOP;
+		}
+
 		/* pyrna_struct_hash() uses ptr.data only,
 		 * but pyrna_struct_richcmp() uses also ptr.type,
 		 * so we need to create a valid PointerRNA here...




More information about the Bf-blender-cvs mailing list