class A:
def __buffer__(self, flags):
return memoryview(bytes(8))
def __release_buffer__(self, view):
pass # do not need to do anything here, just needs to exist
b = bytearray(8)
m = memoryview(b) # now b.extend will raise an exception due to exports
b.extend(A())
In a debug build this crashes with
Assertion failed: (!PyErr_Occurred()), function _PyType_Lookup, file typeobject.c, line 4707.Reported by @chilaxan. I'll work on a fix later today.
Most likely, the fix will be to call
PyErr_Fetch/PyErr_Restorearound calls to Python__release_buffer__methods.Linked PRs
mv.release#104417