mirror of
https://github.com/python/cpython.git
synced 2025-08-22 17:55:18 +00:00
Issue #14172: Fix reference leak when marshalling a buffer-like object (other than a bytes object).
This commit is contained in:
parent
b2b18632ce
commit
679e9d36f7
3 changed files with 30 additions and 4 deletions
|
@ -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__":
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue