diff options
author | Damien George <damien.p.george@gmail.com> | 2014-10-26 13:20:50 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-10-26 13:20:50 +0000 |
commit | de3c806965f907981d5cb5d49fc139845cd94aba (patch) | |
tree | 8fcf9dc7695295c6a5cc3d530d28ca27586a6a36 /tests/basics/memoryview_gc.py | |
parent | c76af32575b0a897b4fdbb7b9c2d0754a8df5399 (diff) | |
download | micropython-de3c806965f907981d5cb5d49fc139845cd94aba.tar.gz micropython-de3c806965f907981d5cb5d49fc139845cd94aba.zip |
py: Fix memoryview referencing so it retains ptr to original buffer.
This way, if original parent object is GC'd, the memoryview still points
to the underlying buffer data so that buffer is not GC'd.
Diffstat (limited to 'tests/basics/memoryview_gc.py')
-rw-r--r-- | tests/basics/memoryview_gc.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/basics/memoryview_gc.py b/tests/basics/memoryview_gc.py new file mode 100644 index 0000000000..a1e4baad47 --- /dev/null +++ b/tests/basics/memoryview_gc.py @@ -0,0 +1,18 @@ +# test memoryview retains pointer to original object/buffer + +b = bytearray(10) +m = memoryview(b)[1:] +for i in range(len(m)): + m[i] = i + +# reclaim b, but hopefully not the buffer +b = None +import gc +gc.collect() + +# allocate lots of memory +for i in range(100000): + [42, 42, 42, 42] + +# check that the memoryview is still what we want +print(list(m)) |