mirror of
https://github.com/python/cpython.git
synced 2025-10-06 23:21:06 +00:00
prevent generator finalization from invalidating sys.exc_info() #7173
This commit is contained in:
parent
0e4c22c922
commit
ae5f2f4a39
3 changed files with 19 additions and 2 deletions
|
@ -6,7 +6,8 @@ import unittest
|
|||
import pickle
|
||||
import weakref
|
||||
|
||||
from test.support import TESTFN, unlink, run_unittest, captured_output
|
||||
from test.support import (TESTFN, unlink, run_unittest, captured_output,
|
||||
gc_collect)
|
||||
|
||||
# XXX This is not really enough, each *operation* should be tested!
|
||||
|
||||
|
@ -554,6 +555,20 @@ class ExceptionTests(unittest.TestCase):
|
|||
del g
|
||||
self.assertEquals(sys.exc_info()[0], TypeError)
|
||||
|
||||
def test_generator_finalizing_and_exc_info(self):
|
||||
# See #7173
|
||||
def simple_gen():
|
||||
yield 1
|
||||
def run_gen():
|
||||
gen = simple_gen()
|
||||
try:
|
||||
raise RuntimeError
|
||||
except RuntimeError:
|
||||
return next(gen)
|
||||
run_gen()
|
||||
gc_collect()
|
||||
self.assertEqual(sys.exc_info(), (None, None, None))
|
||||
|
||||
def test_3114(self):
|
||||
# Bug #3114: in its destructor, MyObject retrieves a pointer to
|
||||
# obsolete and/or deallocated objects.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue