From 7ee15a324b50feb2c86fc31152b099045f5fd02e Mon Sep 17 00:00:00 2001 From: Thomas Kowalski Date: Wed, 27 May 2026 14:39:44 +0200 Subject: [PATCH] fix: address PR review comments - Check PyObject_GetBuffer return value and raise on failure - Avoid unnecessary tobytes() copy for contiguous memoryviews in fallback feed() --- msgpack/_unpacker.pyx | 3 ++- msgpack/fallback.py | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/msgpack/_unpacker.pyx b/msgpack/_unpacker.pyx index da6acbb..fc283f3 100644 --- a/msgpack/_unpacker.pyx +++ b/msgpack/_unpacker.pyx @@ -129,7 +129,8 @@ cdef inline int get_data_from_buffer(object obj, PyBuffer_Release(view) # create a contiguous copy and get buffer contiguous = PyMemoryView_GetContiguous(obj, PyBUF_READ, b'C') - PyObject_GetBuffer(contiguous, view, PyBUF_SIMPLE) + if PyObject_GetBuffer(contiguous, view, PyBUF_SIMPLE) == -1: + raise buffer_len[0] = view.len buf[0] = view.buf diff --git a/msgpack/fallback.py b/msgpack/fallback.py index 159dff2..e4cb987 100644 --- a/msgpack/fallback.py +++ b/msgpack/fallback.py @@ -328,8 +328,7 @@ class Unpacker: self._buf_checkpoint = 0 # Use extend here: INPLACE_ADD += doesn't reliably typecast memoryview in jython - # tobytes ensures compatibility with non-contiguous memoryviews - self._buffer.extend(view.tobytes()) + self._buffer.extend(view if view.contiguous else view.tobytes()) view.release() def _consume(self):