The definition of obj in the `Py_buffer` struct is as a PyObject*
https://github.com/python/cpython/blob/
ec091bd47e2f968b0d1631b9a8104283a7beeb1b/Include/pybuffer.hGH-L22
PyMemoryView_GET_BASE returns `.obj` - thus its return type
should be a PyObject* (or at least a void*). It definitely
doesn't return `Py_buffer`
(cherry picked from commit
c459fedf7cfd5dadf72e088d789c7375b3a6e093)
Co-authored-by: da-woods <dw-git@d-woods.co.uk>
For :term:`contiguous` arrays, the value points to the beginning of
the memory block.
- .. c:member:: void *obj
+ .. c:member:: PyObject *obj
A new reference to the exporting object. The reference is owned by
the consumer and automatically decremented and set to ``NULL`` by
*mview* **must** be a memoryview instance; this macro doesn't check its type,
you must do it yourself or you will risk crashes.
-.. c:function:: Py_buffer *PyMemoryView_GET_BASE(PyObject *mview)
+.. c:function:: PyObject *PyMemoryView_GET_BASE(PyObject *mview)
Return either a pointer to the exporting object that the memoryview is based
on or ``NULL`` if the memoryview has been created by one of the functions