GH-124547: Clear instance dictionary if memory error occurs during object dealloc (GH-124627)

This commit is contained in:
Mark Shannon 2024-09-27 14:51:01 -07:00 committed by GitHub
parent 2357d5ba48
commit 0e21cc6cf8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 27 additions and 2 deletions

View file

@ -1,6 +1,7 @@
"Test the functionality of Python classes implementing operators."
import unittest
import test.support
testmeths = [
@ -932,6 +933,20 @@ class TestInlineValues(unittest.TestCase):
C.a = X()
C.a = X()
def test_detach_materialized_dict_no_memory(self):
import _testcapi
class A:
def __init__(self):
self.a = 1
self.b = 2
a = A()
d = a.__dict__
with test.support.catch_unraisable_exception() as ex:
_testcapi.set_nomemory(0, 1)
del a
self.assertEqual(ex.unraisable.exc_type, MemoryError)
with self.assertRaises(KeyError):
d["a"]
if __name__ == '__main__':
unittest.main()