Skip to content

Commit a6dee4f

Browse files
committed
Use memoryviews instead of old style buffers
1 parent 6c99d6c commit a6dee4f

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

Modules/_librabbitmq/connection.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,16 +1392,14 @@ PyRabbitMQ_recv(PyRabbitMQ_Connection *self, PyObject *p,
13921392
buf = PyBytes_AsString(payload);
13931393
if (!buf)
13941394
goto finally;
1395-
view = PyBuffer_FromObject(payload, 0,
1396-
(Py_ssize_t)body_target);
1395+
view = PyMemoryView_FromObject(payload);
13971396
}
13981397
else {
13991398
if (p) {
14001399
payload = PySTRING_FROM_AMQBYTES(
14011400
frame.payload.body_fragment);
14021401
} else {
1403-
view = PyBuffer_FromMemory(bufp,
1404-
(Py_ssize_t)frame.payload.body_fragment.len);
1402+
view = buffer_toMemoryView(bufp, (Py_ssize_t)frame.payload.body_fragment.len);
14051403
}
14061404
break;
14071405
}

Modules/_librabbitmq/connection.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,21 @@
4545
# endif
4646
#endif
4747

48+
49+
_PYRMQ_INLINE PyObject*
50+
buffer_toMemoryView(char *buf, Py_ssize_t buf_len) {
51+
PyObject *view;
52+
#if PY_MAJOR_VERSION == 2
53+
PyObject *pybuffer;
54+
pybuffer = PyBuffer_FromMemory(buf, buf_len);
55+
view = PyMemoryView_FromObject(pybuffer);
56+
Py_XDECREF(pybuffer);
57+
#else
58+
view = PyMemoryView_FromMemory(buf, buf_len, PyBUF_READ);
59+
#endif
60+
return view;
61+
}
62+
4863
#define PyDICT_SETNONE_DECREF(dict, key) \
4964
do { \
5065
PyDict_SetItem(dict, key, Py_None); \

0 commit comments

Comments
 (0)