[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19202] branches/blender2.5/blender/source /blender/python/intern/bpy_rna.c: PyRNA API: some RNA types were crashing on looping, also return None rather then an RNA struct when the ptr->data is NULL

Campbell Barton ideasman42 at gmail.com
Thu Mar 5 17:24:31 CET 2009


Revision: 19202
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19202
Author:   campbellbarton
Date:     2009-03-05 17:24:30 +0100 (Thu, 05 Mar 2009)

Log Message:
-----------
PyRNA API: some RNA types were crashing on looping, also return None rather then an RNA struct when the ptr->data is NULL

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c	2009-03-05 15:35:15 UTC (rev 19201)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c	2009-03-05 16:24:30 UTC (rev 19202)
@@ -595,8 +595,7 @@
 
 		ret = PyDict_New();
 		for(; iter.valid; RNA_property_collection_next(&iter)) {
-			nameprop= RNA_struct_name_property(&iter.ptr);
-			if(iter.ptr.data && nameprop) {
+			if(iter.ptr.data && (nameprop = RNA_struct_name_property(&iter.ptr))) {
 				nameptr= RNA_property_string_get_alloc(&iter.ptr, nameprop, name, sizeof(name));
 				PyDict_SetItemString(ret, nameptr, Py_None);
 				
@@ -651,8 +650,7 @@
 		
 		RNA_property_collection_begin(&self->ptr, self->prop, &iter);
 		for(; iter.valid; RNA_property_collection_next(&iter)) {
-			nameprop= RNA_struct_name_property(&iter.ptr);
-			if(iter.ptr.data && nameprop) {
+			if(iter.ptr.data && (nameprop = RNA_struct_name_property(&iter.ptr))) {
 				nameptr= RNA_property_string_get_alloc(&iter.ptr, nameprop, name, sizeof(name));				
 				
 				/* add to python list */
@@ -687,8 +685,7 @@
 		
 		RNA_property_collection_begin(&self->ptr, self->prop, &iter);
 		for(; iter.valid; RNA_property_collection_next(&iter)) {
-			nameprop= RNA_struct_name_property(&iter.ptr);
-			if(iter.ptr.data && nameprop) {
+			if(iter.ptr.data && (nameprop = RNA_struct_name_property(&iter.ptr))) {
 				nameptr= RNA_property_string_get_alloc(&iter.ptr, nameprop, name, sizeof(name));
 				
 				/* add to python list */
@@ -723,15 +720,10 @@
 		
 		RNA_property_collection_begin(&self->ptr, self->prop, &iter);
 		for(; iter.valid; RNA_property_collection_next(&iter)) {
-			nameprop= RNA_struct_name_property(&iter.ptr);
-			if(iter.ptr.data && nameprop) {
-				
-				/* add to python list */
+			if(iter.ptr.data && (nameprop = RNA_struct_name_property(&iter.ptr))) {
 				item = pyrna_struct_CreatePyObject(&iter.ptr);
 				PyList_Append(ret, item);
 				Py_DECREF(item);
-				/* done */
-				
 			}
 		}
 		RNA_property_collection_end(&iter);
@@ -997,6 +989,10 @@
 PyObject *pyrna_struct_CreatePyObject( PointerRNA *ptr )
 {
 	BPy_StructRNA *pyrna;
+	
+	if (ptr->data==NULL) {
+		Py_RETURN_NONE;
+	}
 
 	pyrna = ( BPy_StructRNA * ) PyObject_NEW( BPy_StructRNA, &pyrna_struct_Type );
 





More information about the Bf-blender-cvs mailing list