[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24870] trunk/blender/source/blender/ python/intern/bpy_rna.c: disallow dynamic sized rna arrays to be returned as mathutils types since it gives unpradictable results if in one case it returns a vector and another a rna float array .

Campbell Barton ideasman42 at gmail.com
Tue Nov 24 21:15:25 CET 2009


Revision: 24870
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24870
Author:   campbellbarton
Date:     2009-11-24 21:15:24 +0100 (Tue, 24 Nov 2009)

Log Message:
-----------
disallow dynamic sized rna arrays to be returned as mathutils types since it gives unpradictable results if in one case it returns a vector and another a rna float array.

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	2009-11-24 19:47:57 UTC (rev 24869)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2009-11-24 20:15:24 UTC (rev 24870)
@@ -140,18 +140,20 @@
 	PyObject *ret= NULL;
 
 #ifdef USE_MATHUTILS
-	int type, subtype, totdim;
+	int subtype, totdim;
 	int len;
 
+	/* disallow dynamic sized arrays to be wrapped since the size could change
+	 * to a size mathutils does not support */
+	if ((RNA_property_type(prop) != PROP_FLOAT) || (RNA_property_flag(prop) & PROP_DYNAMIC))
+		return NULL;
+
 	len= RNA_property_array_length(ptr, prop);
-	type= RNA_property_type(prop);
 	subtype= RNA_property_subtype(prop);
 	totdim= RNA_property_array_dimension(ptr, prop, NULL);
 
-	if (type != PROP_FLOAT) return NULL;
-
 	if (totdim == 1 || (totdim == 2 && subtype == PROP_MATRIX)) {
-		ret = pyrna_prop_CreatePyObject(ptr, prop);
+		ret = pyrna_prop_CreatePyObject(ptr, prop); /* owned by the Mathutils PyObject */
 
 		switch(RNA_property_subtype(prop)) {
 		case PROP_TRANSLATION:





More information about the Bf-blender-cvs mailing list