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 <[email protected]>
<http://bugs.python.org/issue29178>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com