Issue #14172: Fix reference leak when marshalling a buffer-like object (other than a bytes object).

This commit is contained in:
Antoine Pitrou 2012-03-02 18:12:43 +01:00
parent b2b18632ce
commit 679e9d36f7
3 changed files with 30 additions and 4 deletions

View file

@ -1,6 +1,7 @@
#!/usr/bin/env python3
from test import support
import array
import marshal
import sys
import unittest
@ -137,6 +138,27 @@ class ContainerTestCase(unittest.TestCase, HelperMixin):
for constructor in (set, frozenset):
self.helper(constructor(self.d.keys()))
class BufferTestCase(unittest.TestCase, HelperMixin):
def test_bytearray(self):
b = bytearray(b"abc")
self.helper(b)
new = marshal.loads(marshal.dumps(b))
self.assertEqual(type(new), bytes)
def test_memoryview(self):
b = memoryview(b"abc")
self.helper(b)
new = marshal.loads(marshal.dumps(b))
self.assertEqual(type(new), bytes)
def test_array(self):
a = array.array('B', b"abc")
new = marshal.loads(marshal.dumps(a))
self.assertEqual(new, b"abc")
class BugsTestCase(unittest.TestCase):
def test_bug_5888452(self):
# Simple-minded check for SF 588452: Debug build crashes
@ -243,6 +265,7 @@ def test_main():
CodeTestCase,
ContainerTestCase,
ExceptionTestCase,
BufferTestCase,
BugsTestCase)
if __name__ == "__main__":