Stefan Krah <ste...@bytereef.org> added the comment:
Well, the problem in b) is that data[:2] creates a new memoryview, so the underlying ManagedBufferObject now has two exports: - One from the context manager. - The second from the slice. So memoryview.__exit__() decrements on export, but the second one is hanging. This actually works as expected because the ManagedBufferObject cannot know that it could also release the slice. That's what I meant by saying that it's the application's responsibility to release all views that are based on the context manager's view. One way of doing so would be this: with open(fn, 'rb') as fd: with mmap.mmap(fd.fileno(), 0, access=mmap.ACCESS_READ) as mm: with memoryview(mm) as data: with data[:2] as theslice: print(theslice) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue35686> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com