|
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
|