[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43396] trunk/blender/source/blender/ python/intern/bpy_rna.c: note on compating RNA pointers and compare RNA types for RNA-Properties too .
Campbell Barton
ideasman42 at gmail.com
Sun Jan 15 13:35:46 CET 2012
Revision: 43396
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43396
Author: campbellbarton
Date: 2012-01-15 12:35:40 +0000 (Sun, 15 Jan 2012)
Log Message:
-----------
note on compating RNA pointers and compare RNA types for RNA-Properties too.
Modified Paths:
--------------
trunk/blender/source/blender/python/intern/bpy_rna.c
Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c 2012-01-15 11:53:14 UTC (rev 43395)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c 2012-01-15 12:35:40 UTC (rev 43396)
@@ -743,14 +743,28 @@
return 0;
}
+/* note on __cmp__:
+ * checking the 'ptr->data' matches works in almost all cases,
+ * however there are a few RNA properties that are fake sub-structs and
+ * share the pointer with the parent, in those cases this happens 'a.b == a'
+ * see: r43352 for example.
+ *
+ * So compare the 'ptr->type' as well to avoid this problem.
+ * It's highly unlikely this would happen that 'ptr->data' and 'ptr->prop' would match,
+ * but _not_ 'ptr->type' but include this check for completeness.
+ * - campbell */
+
static int pyrna_struct_compare(BPy_StructRNA *a, BPy_StructRNA *b)
{
- return (a->ptr.data == b->ptr.data && a->ptr.type == b->ptr.type) ? 0 : -1;
+ return ( (a->ptr.data == b->ptr.data) &&
+ (a->ptr.type == b->ptr.type)) ? 0 : -1;
}
static int pyrna_prop_compare(BPy_PropertyRNA *a, BPy_PropertyRNA *b)
{
- return (a->prop == b->prop && a->ptr.data == b->ptr.data) ? 0 : -1;
+ return ( (a->prop == b->prop) &&
+ (a->ptr.data == b->ptr.data) &&
+ (a->ptr.type == b->ptr.type) ) ? 0 : -1;
}
static PyObject *pyrna_struct_richcmp(PyObject *a, PyObject *b, int op)
More information about the Bf-blender-cvs
mailing list