Issue 1881. Increased the stack limit from 500 to 1500. Also added
a test for this (and because of this test you'll see in stderr a message that parser.c sends before raising MemoryError). Thanks Ralf Schmitt.
This commit is contained in:
parent
7832d4d534
commit
fc2d01032f
|
@ -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
|
||||
|
|
|
@ -7,7 +7,7 @@ extern "C" {
|
|||
|
||||
/* Parser interface */
|
||||
|
||||
#define MAXSTACK 500
|
||||
#define MAXSTACK 1500
|
||||
|
||||
typedef struct {
|
||||
int s_state; /* State in current DFA */
|
||||
|
|
Loading…
Reference in New Issue