[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18418] branches/blender2.5/blender/source /blender/python/intern: RNA: fix crash in python code, forgot to update this part in a previous commit.
Brecht Van Lommel
brecht at blender.org
Thu Jan 8 16:29:12 CET 2009
Revision: 18418
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18418
Author: blendix
Date: 2009-01-08 16:29:09 +0100 (Thu, 08 Jan 2009)
Log Message:
-----------
RNA: fix crash in python code, forgot to update this part in a previous commit.
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c
branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h
Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c 2009-01-08 13:57:29 UTC (rev 18417)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_operator.c 2009-01-08 15:29:09 UTC (rev 18418)
@@ -164,7 +164,9 @@
pyrna= (BPy_StructRNA *)pyrna_struct_CreatePyObject(&ptr); /* were not really using &ptr, overwite next */
/* XXX POINTER - if this 'ot' is python generated, it could be free'd */
- RNA_pointer_create(NULL, NULL, ot->srna, &pyrna->properties, &pyrna->ptr);
+ RNA_pointer_create(NULL, ot->srna, NULL, &pyrna->ptr);
+ pyrna->freeptr= 1;
+
return (PyObject *)pyrna;
}
Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c 2009-01-08 13:57:29 UTC (rev 18417)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c 2009-01-08 15:29:09 UTC (rev 18418)
@@ -63,10 +63,10 @@
static void pyrna_struct_dealloc( BPy_StructRNA * self )
{
/* Note!! for some weired reason calling PyObject_DEL() directly crashes blender! */
- if (self->properties) {
- IDP_FreeProperty(self->properties);
- MEM_freeN(self->properties);
- self->properties= NULL;
+ if (self->freeptr && self->ptr.data) {
+ IDP_FreeProperty(self->ptr.data);
+ MEM_freeN(self->ptr.data);
+ self->ptr.data= NULL;
}
((PyObject *)self)->ob_type->tp_free(self);
@@ -1135,7 +1135,7 @@
}
pyrna->ptr= *ptr;
- pyrna->properties= NULL;
+ pyrna->freeptr= 0;
return ( PyObject * ) pyrna;
}
Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h 2009-01-08 13:57:29 UTC (rev 18417)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_rna.h 2009-01-08 15:29:09 UTC (rev 18418)
@@ -36,7 +36,7 @@
typedef struct {
PyObject_VAR_HEAD /* required python macro */
PointerRNA ptr;
- IDProperty *properties; /* needed in some cases for RNA_pointer_create(), free when deallocing */
+ int freeptr; /* needed in some cases if ptr.data is created on the fly, free when deallocing */
} BPy_StructRNA;
typedef struct {
More information about the Bf-blender-cvs
mailing list