From: Dominique O. <dom...@gm...> - 2010-06-03 06:57:00
|
2010/6/3 Łukasz Pankowski <lu...@o2...>: > Daniel Wheeler <dan...@gm...> writes: > >> It seems that the find() method (lin 2986 in in Src/ll_mat.c) has a >> memory leak. Calling PyDECREF on a_row, a_col and a_val fixes this >> issue. I propose the following change: > > I propose simpler (`N' is like `O' but without PyINCREF, details below): > > $ git diff > diff --git a/Src/ll_mat.c b/Src/ll_mat.c > index 230829a..1adee2f 100644 > --- a/Src/ll_mat.c > +++ b/Src/ll_mat.c > @@ -3014,7 +3014,7 @@ static PyObject *LLMat_Find( LLMatObject *self, PyObject *args ) { > } > } > > - return Py_BuildValue( "OOO", > + return Py_BuildValue( "NNN", > PyArray_Return( a_val ), > PyArray_Return( a_row ), > PyArray_Return( a_col ) ); > > > from File: python2.5-api.info, Node: Parsing arguments and building values > > ``N' (object) {[PyObject * }]' > Same as `O', except it doesn't increment the reference count > on the object. Useful when the object is created by a call > to an object constructor in the argument list. Thanks. I fixed it in the new-setup branch as well. -- Dominique |