mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-111132: Fix crash on interactive_filename in run_mod
(#111136)
This commit is contained in:
parent
37e4e20eaa
commit
124259f9b3
2 changed files with 14 additions and 1 deletions
|
@ -684,6 +684,17 @@ class CmdLineTest(unittest.TestCase):
|
|||
]
|
||||
)
|
||||
|
||||
def test_syntaxerror_does_not_crash(self):
|
||||
script = "nonlocal x\n"
|
||||
with os_helper.temp_dir() as script_dir:
|
||||
script_name = _make_test_script(script_dir, 'script', script)
|
||||
exitcode, stdout, stderr = assert_python_failure(script_name)
|
||||
text = io.TextIOWrapper(io.BytesIO(stderr), 'ascii').read()
|
||||
# It used to crash in https://github.com/python/cpython/issues/111132
|
||||
self.assertTrue(text.endswith(
|
||||
'SyntaxError: nonlocal declaration not allowed at module level\n',
|
||||
), text)
|
||||
|
||||
def test_consistent_sys_path_for_direct_execution(self):
|
||||
# This test case ensures that the following all give the same
|
||||
# sys.path configuration:
|
||||
|
|
|
@ -1277,7 +1277,9 @@ run_mod(mod_ty mod, PyObject *filename, PyObject *globals, PyObject *locals,
|
|||
|
||||
PyCodeObject *co = _PyAST_Compile(mod, interactive_filename, flags, -1, arena);
|
||||
if (co == NULL) {
|
||||
Py_DECREF(interactive_filename);
|
||||
if (interactive_src) {
|
||||
Py_DECREF(interactive_filename);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue