[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