Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2005-06-17 09:10:14 +0400
committerMartin Poirier <theeth@yahoo.com>2005-06-17 09:10:14 +0400
commit5f5844b95e3f44c67ad5a962f28c1ed0e31910c5 (patch)
treed3761863cfa4d32fb849b7b11ba0913afa45789d /source/blender/python/api2_2x/Metaball.c
parent2a640f03cd71cf96b817a37cdd72f8e27f3f732a (diff)
Some of the setattr functions created a tuple to pass to the set* functions and didn't decref'ed it properly, "leaking" memory.
Commit approved by stivs.
Diffstat (limited to 'source/blender/python/api2_2x/Metaball.c')
-rw-r--r--source/blender/python/api2_2x/Metaball.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/source/blender/python/api2_2x/Metaball.c b/source/blender/python/api2_2x/Metaball.c
index eb19cf47c6a..938d3128543 100644
--- a/source/blender/python/api2_2x/Metaball.c
+++ b/source/blender/python/api2_2x/Metaball.c
@@ -1105,6 +1105,7 @@ static PyObject *MetaballGetAttr( BPy_Metaball * self, char *name )
/****************************************************************************/
static int MetaballSetAttr( BPy_Metaball * self, char *name, PyObject * value )
{
+ PyObject *result = NULL;
PyObject *valtuple = Py_BuildValue( "(O)", value );
if( !valtuple )
@@ -1112,25 +1113,29 @@ static int MetaballSetAttr( BPy_Metaball * self, char *name, PyObject * value )
"MetaballSetAttr: couldn't create PyTuple" );
if( strcmp( name, "name" ) == 0 ) {
- Metaball_setName( self, valtuple );
- return 0;
+ result = Metaball_setName( self, valtuple );
}
-
- if( strcmp( name, "rot" ) == 0 ) {
- Metaball_setrot( self, valtuple );
- return 0;
+ else if( strcmp( name, "rot" ) == 0 ) {
+ result = Metaball_setrot( self, valtuple );
}
- if( strcmp( name, "loc" ) == 0 ) {
- Metaball_setloc( self, valtuple );
- return 0;
+ else if( strcmp( name, "loc" ) == 0 ) {
+ result = Metaball_setloc( self, valtuple );
}
- if( strcmp( name, "size" ) == 0 ) {
- Metaball_setsize( self, valtuple );
- return 0;
+ else if( strcmp( name, "size" ) == 0 ) {
+ result = Metaball_setsize( self, valtuple );
}
- return ( EXPP_ReturnIntError
- ( PyExc_KeyError, "attribute not found" ) );
+ else {
+ Py_DECREF(valtuple);
+ return ( EXPP_ReturnIntError
+ ( PyExc_KeyError, "attribute not found" ) );
+ }
+ Py_DECREF(valtuple);
+ if (result != Py_None) {
+ return -1;
+ }
+ Py_DECREF(Py_None);
+ return 0;
}