diff options
author | Martin Poirier <theeth@yahoo.com> | 2005-06-17 09:10:14 +0400 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2005-06-17 09:10:14 +0400 |
commit | 5f5844b95e3f44c67ad5a962f28c1ed0e31910c5 (patch) | |
tree | d3761863cfa4d32fb849b7b11ba0913afa45789d /source/blender/python/api2_2x/Metaball.c | |
parent | 2a640f03cd71cf96b817a37cdd72f8e27f3f732a (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.c | 33 |
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; } |