diff options
-rw-r--r-- | Lib/test/test_parser.py | 17 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Parser/parser.h | 2 |
3 files changed, 21 insertions, 1 deletions
diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py index fd28610..4119112 100644 --- a/Lib/test/test_parser.py +++ b/Lib/test/test_parser.py @@ -480,11 +480,28 @@ class CompileTestCase(unittest.TestCase): st = parser.suite('a = u"\u1"') self.assertRaises(SyntaxError, parser.compilest, st) +class ParserStackLimitTestCase(unittest.TestCase): + """try to push the parser to/over it's limits. + see http://bugs.python.org/issue1881 for a discussion + """ + def _nested_expression(self, level): + return "["*level+"]"*level + + def test_deeply_nested_list(self): + e = self._nested_expression(99) + st = parser.expr(e) + st.compile() + + def test_trigger_memory_error(self): + e = self._nested_expression(100) + self.assertRaises(MemoryError, parser.expr, e) + def test_main(): test_support.run_unittest( RoundtripLegalSyntaxTestCase, IllegalSyntaxTestCase, CompileTestCase, + ParserStackLimitTestCase, ) @@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 1? Core and builtins ----------------- +- Issue #1881: An internal parser limit has been increased. Also see + issue 215555 for a discussion. + - Added the future_builtins module, which contains hex() and oct(). These are the PEP 3127 version of these functions, designed to be compatible with the hex() and oct() builtins from Python 3.0. They diff --git a/Parser/parser.h b/Parser/parser.h index bdca3e9..403236d 100644 --- a/Parser/parser.h +++ b/Parser/parser.h @@ -7,7 +7,7 @@ extern "C" { /* Parser interface */ -#define MAXSTACK 500 +#define MAXSTACK 1500 typedef struct { int s_state; /* State in current DFA */ |