[3.12] gh-107967: Fix infinite recursion on invalid escape sequence warning (GH-107968) (#107970)

gh-107967: Fix infinite recursion on invalid escape sequence warning (GH-107968)
(cherry picked from commit d66bc9e8a7)

Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
This commit is contained in:
Miss Islington (bot) 2023-08-15 05:41:55 -07:00 committed by GitHub
parent e8963a86ea
commit d189480942
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 0 deletions

View file

@ -1673,5 +1673,15 @@ def test_debug_in_file(self):
self.assertEqual(stdout.decode('utf-8').strip().replace('\r\n', '\n').replace('\r', '\n'),
"3\n=3")
def test_syntax_warning_infinite_recursion_in_file(self):
with temp_cwd():
script = 'script.py'
with open(script, 'w') as f:
f.write(r"print(f'\{1}')")
_, stdout, stderr = assert_python_ok(script)
self.assertIn(rb'\1', stdout)
self.assertEqual(len(stderr.strip().splitlines()), 2)
if __name__ == '__main__':
unittest.main()

View file

@ -1544,6 +1544,9 @@ parser_warn(struct tok_state *tok, PyObject *category, const char *format, ...)
static int
warn_invalid_escape_sequence(struct tok_state *tok, int first_invalid_escape_char)
{
if (!tok->report_warnings) {
return 0;
}
PyObject *msg = PyUnicode_FromFormat(
"invalid escape sequence '\\%c'",