Skip to content

Commit b82d0b6

Browse files
authored
fallback: Fix packing multidim memoryview (#527)
Fix #526
1 parent c399566 commit b82d0b6

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

msgpack/fallback.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,7 @@ def _pack(
814814
self._pack_raw_header(n)
815815
return self._buffer.write(obj)
816816
if check(obj, memoryview):
817-
n = len(obj) * obj.itemsize
817+
n = obj.nbytes
818818
if n >= 2**32:
819819
raise ValueError("Memoryview is too large")
820820
self._pack_bin_header(n)

test/test_memoryview.py

+8
Original file line numberDiff line numberDiff line change
@@ -96,3 +96,11 @@ def test_bin32_from_byte():
9696

9797
def test_bin32_from_float():
9898
_runtest("f", 2**16, b"\xc6", b"\x00\x01\x00\x00", True)
99+
100+
101+
def test_multidim_memoryview():
102+
# See https://github.com/msgpack/msgpack-python/issues/526
103+
view = memoryview(b"\00" * 6)
104+
data = view.cast(view.format, (3, 2))
105+
packed = packb(data)
106+
assert packed == b'\xc4\x06\x00\x00\x00\x00\x00\x00'

0 commit comments

Comments
 (0)