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 );
 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to