Eryk Sun added the comment: Isn't the proposed workaround also relying on CPython reference counting to immediately deallocate the sliced view? It fails if I keep a reference to the sliced view:
byteslike = bytearray(b'abc') with memoryview(byteslike) as m1: m2 = m1[1:] bs = bytes(m2) >>> byteslike += b'd' Traceback (most recent call last): File "<stdin>", line 1, in <module> BufferError: Existing exports of data: object cannot be re-sized It seems to me that it should be written as follows: with memoryview(byteslike) as m1: with m1[1:] as m2: bs = bytes(m2) >>> byteslike += b'd' >>> byteslike bytearray(b'abcd') The memoryview constructor could take start, stop, and step keyword-only arguments to avoid having to immediately slice a new view. ---------- nosy: +eryksun _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue29178> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com