diff options
author | Campbell Barton <ideasman42@gmail.com> | 2007-05-25 20:43:25 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2007-05-25 20:43:25 +0400 |
commit | f231bd0d5715ac67767f96f3a8d20ebf618f7b03 (patch) | |
tree | 34c05572641b2eafad9fa8e342724e0b05b6b3d8 /source/blender/python/api2_2x/World.c | |
parent | a21f8292d9aeff54153fc65560d56b3d4f33575a (diff) |
Many long standing memory leaks fixed in the BPY api.
Data from Armature.c and logic.c still leaks.
Mostly todo with PyList_Append adding a refcount and the bpython api not decrefing.
Also added some features needed to fix a bug in mesh_clean.py (ob.pinShape and ob.activeShape)
Diffstat (limited to 'source/blender/python/api2_2x/World.c')
-rw-r--r-- | source/blender/python/api2_2x/World.c | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/source/blender/python/api2_2x/World.c b/source/blender/python/api2_2x/World.c index c321fccb044..ec73caa962b 100644 --- a/source/blender/python/api2_2x/World.c +++ b/source/blender/python/api2_2x/World.c @@ -439,7 +439,8 @@ static PyObject *M_World_Get( PyObject * self, PyObject * args ) &World_Type ); found_world->world = world_iter; PyList_Append( worldlist, ( PyObject * ) found_world ); - + Py_DECREF(found_world); + world_iter = world_iter->id.next; } return ( worldlist ); @@ -673,13 +674,13 @@ static PyObject *World_oldsetMistype( BPy_World * self, PyObject * args ) static PyObject *World_getHor( BPy_World * self ) { - PyObject *attr = PyList_New( 0 ); + PyObject *attr = PyList_New( 3 ); if( !attr ) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "couldn't create list" ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->horr ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->horg ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->horb ) ); + PyList_SET_ITEM( attr, 0, PyFloat_FromDouble( self->world->horr ) ); + PyList_SET_ITEM( attr, 1, PyFloat_FromDouble( self->world->horg ) ); + PyList_SET_ITEM( attr, 2, PyFloat_FromDouble( self->world->horb ) ); return attr; } @@ -705,13 +706,13 @@ static PyObject *World_oldsetHor( BPy_World * self, PyObject * args ) static PyObject *World_getZen( BPy_World * self ) { - PyObject *attr = PyList_New( 0 ); + PyObject *attr = PyList_New( 3 ); if( !attr ) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "couldn't create list" ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->zenr ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->zeng ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->zenb ) ); + PyList_SET_ITEM( attr, 0, PyFloat_FromDouble( self->world->zenr ) ); + PyList_SET_ITEM( attr, 1, PyFloat_FromDouble( self->world->zeng ) ); + PyList_SET_ITEM( attr, 2, PyFloat_FromDouble( self->world->zenb ) ); return attr; } @@ -738,13 +739,13 @@ static PyObject *World_oldsetZen( BPy_World * self, PyObject * args ) static PyObject *World_getAmb( BPy_World * self ) { - PyObject *attr = PyList_New( 0 ); + PyObject *attr = PyList_New( 3 ); if( !attr ) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "couldn't create list" ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->ambr ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->ambg ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->ambb ) ); + PyList_SET_ITEM( attr, 0, PyFloat_FromDouble( self->world->ambr ) ); + PyList_SET_ITEM( attr, 1, PyFloat_FromDouble( self->world->ambg ) ); + PyList_SET_ITEM( attr, 2, PyFloat_FromDouble( self->world->ambb ) ); return attr; } @@ -770,17 +771,17 @@ static PyObject *World_oldsetAmb( BPy_World * self, PyObject * args ) static PyObject *World_getStar( BPy_World * self ) { - PyObject *attr = PyList_New( 0 ); + PyObject *attr = PyList_New( 7 ); if( !attr ) return ( EXPP_ReturnPyObjError ( PyExc_RuntimeError, "couldn't create list" ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->starr ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->starg ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->starb ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->starsize ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->starmindist ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->stardist ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->starcolnoise ) ); + PyList_SET_ITEM( attr, 0, PyFloat_FromDouble( self->world->starr ) ); + PyList_SET_ITEM( attr, 1, PyFloat_FromDouble( self->world->starg ) ); + PyList_SET_ITEM( attr, 2, PyFloat_FromDouble( self->world->starb ) ); + PyList_SET_ITEM( attr, 3, PyFloat_FromDouble( self->world->starsize ) ); + PyList_SET_ITEM( attr, 4, PyFloat_FromDouble( self->world->starmindist ) ); + PyList_SET_ITEM( attr, 5, PyFloat_FromDouble( self->world->stardist ) ); + PyList_SET_ITEM( attr, 6, PyFloat_FromDouble( self->world->starcolnoise ) ); return attr; } @@ -815,18 +816,17 @@ static PyObject *World_oldsetStar( BPy_World * self, PyObject * args ) static PyObject *World_getMist( BPy_World * self ) { - PyObject *attr = PyList_New( 0 ); + PyObject *attr = PyList_New( 4 ); if( !attr ) return ( EXPP_ReturnPyObjError ( PyExc_RuntimeError, "couldn't create list" ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->misi ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->miststa ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->mistdist ) ); - PyList_Append( attr, PyFloat_FromDouble( self->world->misthi ) ); + PyList_SET_ITEM( attr, 0, PyFloat_FromDouble( self->world->misi ) ); + PyList_SET_ITEM( attr, 1, PyFloat_FromDouble( self->world->miststa ) ); + PyList_SET_ITEM( attr, 2, PyFloat_FromDouble( self->world->mistdist ) ); + PyList_SET_ITEM( attr, 3, PyFloat_FromDouble( self->world->misthi ) ); return attr; } - static int World_setMist( BPy_World * self, PyObject * value ) { if( !PyList_Check( value ) ) |