diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2024-08-02 14:07:16 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-02 14:07:16 (GMT) |
commit | b20893b5c2dc999bbad5723c20f0ff2aea83a428 (patch) | |
tree | 06b0ef6a32beac6476011b8f6442688f86a99243 /Lib/test/test_embed.py | |
parent | c1efeb32345e93d423665e91a61ce34a482e0271 (diff) | |
download | cpython-b20893b5c2dc999bbad5723c20f0ff2aea83a428.zip cpython-b20893b5c2dc999bbad5723c20f0ff2aea83a428.tar.gz cpython-b20893b5c2dc999bbad5723c20f0ff2aea83a428.tar.bz2 |
[3.13] gh-122334: Fix crash when importing ssl after re-initialization (GH-122481) (#122614)
gh-122334: Fix crash when importing ssl after re-initialization (GH-122481)
* Fix crash when importing ssl after re-initialization
(cherry picked from commit 9fc1c992d6fcea0b7558c581846eef6bdd811f6c)
Co-authored-by: neonene <53406459+neonene@users.noreply.github.com>
Diffstat (limited to 'Lib/test/test_embed.py')
-rw-r--r-- | Lib/test/test_embed.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index 9a63dbc..19db79f 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -460,6 +460,25 @@ class EmbeddingTests(EmbeddingTestsMixin, unittest.TestCase): self.assertEqual(result, {}) self.assertEqual(out, '') + def test_getargs_reset_static_parser(self): + # Test _PyArg_Parser initializations via _PyArg_UnpackKeywords() + # https://github.com/python/cpython/issues/122334 + code = textwrap.dedent(""" + import _ssl + _ssl.txt2obj(txt='1.3') + print('1') + + import _queue + _queue.SimpleQueue().put_nowait(item=None) + print('2') + + import _zoneinfo + _zoneinfo.ZoneInfo.clear_cache(only_keys=['Foo/Bar']) + print('3') + """) + out, err = self.run_embedded_interpreter("test_repeated_init_exec", code) + self.assertEqual(out, '1\n2\n3\n' * INIT_LOOPS) + @unittest.skipIf(_testinternalcapi is None, "requires _testinternalcapi") class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): |