[Numpy-discussion] PyArray_Resize reference counting

Ravi lists_ravi at lavabit.com
Wed Oct 1 15:21:29 EDT 2008


On Tuesday 30 September 2008 18:54:21 Travis E. Oliphant wrote:
> 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.

Thanks for the very clear explanation.

> PyObject *dummy;
> dummy = PyArray_Resize(array, ...)
> if (dummy == NULL) goto fail;
> Py_DECREF(dummy)
>
> is what you need to do.

If dummy is NULL, is the original array guaranteed to be unchanged (strong 
exception safety with rollback semantics)? If not, is the original array 
guaranteed to be at least in an internally consistent state (weak exception 
safety)?

In general, do functions modifying numpy arrays provide at least weak 
exception safety guarantee? Or do they go one step further and provide 
rollback semantics in case of exceptions?

Regards,
Ravi





More information about the NumPy-Discussion mailing list