summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-10-26 13:20:50 +0000
committerDamien George <damien.p.george@gmail.com>2014-10-26 13:20:50 +0000
commitde3c806965f907981d5cb5d49fc139845cd94aba (patch)
tree8fcf9dc7695295c6a5cc3d530d28ca27586a6a36 /tests
parentc76af32575b0a897b4fdbb7b9c2d0754a8df5399 (diff)
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')
-rw-r--r--tests/basics/memoryview_gc.py18
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 000000000..a1e4baad4
--- /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))