memoryview(ctypes.Structure) does not produce the correct format string
Created originally on Bitbucket by mattip
The following passes on CPython, fails on PyPy (mv.format
is B
)
class Struct(Structure):
_fields_ = [('a', c_int16)]
Struct3 = 3 * Struct
c_array = (2 * Struct3)(
Struct3(Struct(a=1), Struct(a=2), Struct(a=3)),
Struct3(Struct(a=4), Struct(a=5), Struct(a=6))
)
mv = memoryview(c_array)
assert mv.format == 'T{<h:a:}'
The memoryview
call goes to _CData.__buffer__
in lib_pypy._ctypes.basics.py
, which should not just call buffer(self._buffer)