Pauli Virtanen <p...@iki.fi> added the comment: [clip] > This is a different issue.
It is the issue relevant for this discussion. As written in my comment: "So, `bf_releasebuffer` cannot rely on (i) the data in Py_buffer being what `bf_getbuffer` put there, and (ii) getting the same Py_buffer data only once." > PyObject_GetBuffer() is called twice too: once when creating the > memoryview, once when calling memory_getbuf. > So again, bf_getbuffer is called the same number of times as > bf_releasebuffer. Yes, it is called twice, but with exactly the same data in Py_buffer. So I would rather say that bf_releasebuffer is called twice on the Py_buffer returned by the first Getbuffer, and zero times for the buffer returned by the second one. > > Note that the view.internal pointer is also clobbered above. > > Are you sure? memoryobject.c doesn't touch that pointer at all. dup_buffer does *dst = *src, which overwrites the view.internal pointer obtained from one GetBuffer call with a pointer obtained from a previous one. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue10181> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com