[3.14] gh-135028: Increase parser MAXSTACK for nested parenthesis (GH-135031) (#135059)

gh-135028: Increase parser MAXSTACK for nested parenthesis (GH-135031)
(cherry picked from commit 6e80f11eb5)

Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Miss Islington (bot) 2025-06-03 14:23:06 +02:00 committed by GitHub
parent 9e0ac76d96
commit 89df01bd27
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 3 deletions

View file

@ -1,7 +1,7 @@
# Python test set -- part 1, grammar.
# This just tests whether the parser accepts them all.
from test.support import check_syntax_error
from test.support import check_syntax_error, skip_wasi_stack_overflow
from test.support import import_helper
import annotationlib
import inspect
@ -249,6 +249,18 @@ def test_eof_error(self):
compile(s, "<test>", "exec")
self.assertIn("was never closed", str(cm.exception))
@skip_wasi_stack_overflow()
def test_max_level(self):
# Macro defined in Parser/lexer/state.h
MAXLEVEL = 200
result = eval("(" * MAXLEVEL + ")" * MAXLEVEL)
self.assertEqual(result, ())
with self.assertRaises(SyntaxError) as cm:
eval("(" * (MAXLEVEL + 1) + ")" * (MAXLEVEL + 1))
self.assertStartsWith(str(cm.exception), 'too many nested parentheses')
var_annot_global: int # a global annotated is necessary for test_var_annot

2
Parser/parser.c generated
View file

@ -14,7 +14,7 @@
# define MAXSTACK 4000
# endif
#else
# define MAXSTACK 4000
# define MAXSTACK 6000
#endif
static const int n_keyword_lists = 9;
static KeywordToken *reserved_keywords[] = {

View file

@ -44,7 +44,7 @@
# define MAXSTACK 4000
# endif
#else
# define MAXSTACK 4000
# define MAXSTACK 6000
#endif
"""