[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20460] branches/blender2.5/blender/source /blender: rna_define.c, RNA_def_struct - set the py_type to NULL when making an rna struct based on another .
Campbell Barton
ideasman42 at gmail.com
Thu May 28 04:03:49 CEST 2009
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");
}
More information about the Bf-blender-cvs
mailing list