mirror of
https://github.com/python/cpython.git
synced 2026-05-06 04:37:33 -04:00
[3.14] gh-148653: Fix reference leaks in test_marshal introduced in gh-148698 (GH-148725) (GH-148727)
(cherry picked from commit 7ce737ea11)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
committed by
GitHub
parent
d496c637a3
commit
a37b105eec
@@ -357,6 +357,9 @@ class BugsTestCase(unittest.TestCase):
|
||||
code = f.__code__
|
||||
a = []
|
||||
code = code.replace(co_consts=code.co_consts + (a,))
|
||||
# This test creates a reference loop which leads to reference leaks,
|
||||
# so we need to break the loop manually. See gh-148722.
|
||||
self.addCleanup(a.clear)
|
||||
a.append(code)
|
||||
for v in range(marshal.version + 1):
|
||||
self.assertRaises(ValueError, marshal.dumps, code, v)
|
||||
@@ -404,10 +407,12 @@ class BugsTestCase(unittest.TestCase):
|
||||
self.assertIs(a[0][None], a)
|
||||
|
||||
# Direct self-reference which cannot be created in Python.
|
||||
data = b'\xa8\x01\x00\x00\x00r\x00\x00\x00\x00' # (<R>,)
|
||||
a = marshal.loads(data)
|
||||
self.assertIsInstance(a, tuple)
|
||||
self.assertIs(a[0], a)
|
||||
# This creates a reference loop which cannot be collected.
|
||||
if False:
|
||||
data = b'\xa8\x01\x00\x00\x00r\x00\x00\x00\x00' # (<R>,)
|
||||
a = marshal.loads(data)
|
||||
self.assertIsInstance(a, tuple)
|
||||
self.assertIs(a[0], a)
|
||||
|
||||
# Direct self-references which cannot be created in Python
|
||||
# because of unhashability.
|
||||
|
||||
Reference in New Issue
Block a user