[Numpy-discussion] PyArray_Resize reference counting
Travis E. Oliphant
oliphant at enthought.com
Tue Sep 30 18:54:21 EDT 2008
Ravi wrote:
> On Tuesday 30 September 2008 16:26:08 Travis E. Oliphant wrote:
>
>> You need to do something like:
>>
>> temp = PyArray_Resize(array,...)
>> Py_DECREF(array)
>> array = temp
>>
>
> In this case, since a new array may be returned, is there no way to
> synchronize with other objects holding a reference to the original array?
Hold on!!
I just went to the code and noticed that PyArray_Resize returns None.
So, you certainly don't want to point array to it. The array does not
get any reference count changes.
There are three concepts here:
1) The array object
2) The memory for the array
3) The reference count on the array object
PyArray_Resize doesn't change 1) or 3), it changes 2)
So,
PyObject *dummy;
dummy = PyArray_Resize(array, ...)
if (dummy == NULL) goto fail;
Py_DECREF(dummy)
is what you need to do.
-Travis
More information about the NumPy-Discussion
mailing list