Commit: f38f7874488de876410e1bb4acf67a4629ba2b82 Author: Bastien Montagne Date: Tue Sep 13 13:22:03 2016 +0200 Branches: master https://developer.blender.org/rBf38f7874488de876410e1bb4acf67a4629ba2b82
Fix bpy.data.user_map() ignoring unused datablocks. Should be backported to 2.78. Found by Sybren here in studio, thanks! =================================================================== 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 31189ba..3e50e79 100644 --- a/source/blender/python/intern/bpy_rna_id_collection.c +++ b/source/blender/python/intern/bpy_rna_id_collection.c @@ -233,8 +233,26 @@ static PyObject *bpy_user_map(PyObject *UNUSED(self), PyObject *args, PyObject * data_cb.py_id_key_lookup_only = pyrna_id_CreatePyObject(id); } + if (!data_cb.is_subset) { + PyObject *key = data_cb.py_id_key_lookup_only; + PyObject *set; + + RNA_id_pointer_create(id, &((BPy_StructRNA *)key)->ptr); + + /* We have to insert the key now, otherwise ID unused would be missing from final dict... */ + if ((set = PyDict_GetItem(data_cb.user_map, key)) == NULL) { + /* Cannot use our placeholder key here! */ + key = pyrna_id_CreatePyObject(id); + set = PySet_New(NULL); + PyDict_SetItem(data_cb.user_map, key, set); + Py_DECREF(set); + Py_DECREF(key); + } + } + data_cb.id_curr = id; BKE_library_foreach_ID_link(id, foreach_libblock_id_user_map_callback, &data_cb, IDWALK_NOP); + if (data_cb.py_id_curr) { Py_DECREF(data_cb.py_id_curr); data_cb.py_id_curr = NULL; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs