Skip to content

Commit 3f35a46

Browse files
committed
Add ob_exports handling for bytearray
1 parent ade1b26 commit 3f35a46

File tree

4 files changed

+242
-220
lines changed

4 files changed

+242
-220
lines changed

graalpython/com.oracle.graal.python.cext/src/bytearrayobject.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,10 @@ int bytearray_getbuffer(PyByteArrayObject *obj, Py_buffer *view, int flags) {
5454
ptr = (void *) PyByteArray_AS_STRING(obj);
5555
/* cannot fail if view != NULL and readonly == 0 */
5656
(void)PyBuffer_FillInfo(view, (PyObject*)obj, ptr, Py_SIZE(obj), 0, flags);
57+
obj->ob_exports++;
5758
return 0;
5859
}
60+
61+
void bytearray_releasebuffer(PyByteArrayObject *obj, Py_buffer *view) {
62+
obj->ob_exports--;
63+
}

graalpython/com.oracle.graal.python.cext/src/capi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ static void initialize_globals() {
247247

248248
static void initialize_bufferprocs() {
249249
polyglot_invoke(PY_TRUFFLE_CEXT, "PyTruffle_SetBufferProcs", native_to_java((PyObject*)&PyBytes_Type), (getbufferproc)bytes_buffer_getbuffer, (releasebufferproc)NULL);
250-
polyglot_invoke(PY_TRUFFLE_CEXT, "PyTruffle_SetBufferProcs", native_to_java((PyObject*)&PyByteArray_Type), (getbufferproc)bytearray_getbuffer, (releasebufferproc)NULL);
250+
polyglot_invoke(PY_TRUFFLE_CEXT, "PyTruffle_SetBufferProcs", native_to_java((PyObject*)&PyByteArray_Type), (getbufferproc)bytearray_getbuffer, (releasebufferproc)bytearray_releasebuffer);
251251
polyglot_invoke(PY_TRUFFLE_CEXT, "PyTruffle_SetBufferProcs", native_to_java((PyObject*)&PyBuffer_Type), (getbufferproc)bufferdecorator_getbuffer, (releasebufferproc)NULL);
252252
polyglot_invoke(PY_TRUFFLE_CEXT, "PyTruffle_SetBufferProcs", native_to_java((PyObject*)&PyMemoryView_Type), (getbufferproc)memoryview_getbuffer, (releasebufferproc)memoryview_releasebuffer);
253253
}

graalpython/com.oracle.graal.python.cext/src/capi.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,7 @@ extern PyObject* wrapped_null;
385385
/* BYTES, BYTEARRAY */
386386
int bytes_buffer_getbuffer(PyBytesObject *self, Py_buffer *view, int flags);
387387
int bytearray_getbuffer(PyByteArrayObject *obj, Py_buffer *view, int flags);
388+
void bytearray_releasebuffer(PyByteArrayObject *obj, Py_buffer *view);
388389

389390
/* Like 'memcpy' but can read/write from/to managed objects. */
390391
int bytes_copy2mem(char* target, char* source, size_t nbytes);

0 commit comments

Comments
 (0)