Revision: 20460
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20460
Author:   campbellbarton
Date:     2009-05-28 04:03:48 +0200 (Thu, 28 May 2009)

Log Message:
-----------
rna_define.c, RNA_def_struct - set the py_type to NULL when making an rna 
struct based on another.
bpy_util.c, PyObSpit - print refcount with PyObject

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

Modified: 
branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c     
2009-05-28 01:57:29 UTC (rev 20459)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c     
2009-05-28 02:03:48 UTC (rev 20460)
@@ -559,6 +559,7 @@
                memcpy(srna, srnafrom, sizeof(StructRNA));
                srna->cont.properties.first= srna->cont.properties.last= NULL;
                srna->functions.first= srna->functions.last= NULL;
+               srna->py_type= NULL;
 
                if(DefRNA.preprocess) {
                        srna->base= srnafrom;
@@ -567,7 +568,7 @@
                else
                        srna->base= srnafrom;
        }
-
+       
        srna->identifier= identifier;
        srna->name= identifier; /* may be overwritten later 
RNA_def_struct_ui_text */
        srna->description= "";

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c  
2009-05-28 01:57:29 UTC (rev 20459)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c  
2009-05-28 02:03:48 UTC (rev 20460)
@@ -1366,16 +1366,12 @@
        PyObject *item;
        
        Py_INCREF(newclass);
-
-       /* Something fishy is going on here, the pointer is set many times but 
never free'd
-        * It also is almost always the same type so it looks like the same 
point is
-        * being reused when it should not be - must look into this further */
-#if 0
+       
        if (RNA_struct_py_type_get(srna))
-               PyObSpit("RNA WAS SET - ", RNA_struct_py_type_get(srna));       
-       Py_XDECREF(RNA_struct_py_type_get(srna)); // TODO - why does this 
crash???
-#endif
+               PyObSpit("RNA WAS SET - ", RNA_struct_py_type_get(srna));
        
+       Py_XDECREF(RNA_struct_py_type_get(srna));
+       
        RNA_struct_py_type_set(srna, (void *)newclass); /* Store for later use 
*/
 
        /* Not 100% needed but useful,
@@ -1930,6 +1926,10 @@
 
 static void bpy_class_free(void *pyob_ptr)
 {
+       if(G.f&G_DEBUG) {
+               if(((PyObject *)pyob_ptr)->ob_refcnt > 1)
+                       PyObSpit("zombie class - ref should be 1", (PyObject 
*)pyob_ptr);
+       }
        Py_DECREF((PyObject *)pyob_ptr);
 }
 

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_util.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_util.c 
2009-05-28 01:57:29 UTC (rev 20459)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_util.c 
2009-05-28 02:03:48 UTC (rev 20460)
@@ -166,6 +166,8 @@
        }
        else {
                PyObject_Print(var, stderr, 0);
+               fprintf(stderr, " ref:%d ", var->ob_refcnt);
+               fprintf(stderr, " ptr:%ld", (long)var);
        }
        fprintf(stderr, "\n");
 }


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

Reply via email to