From aab9c2b2ead7b786947c367a9cc5d9c921b9ea99 Mon Sep 17 00:00:00 2001 From: Nick Coghlan Date: Sun, 4 Nov 2012 23:14:34 +1000 Subject: Issue #5765: Apply a hard recursion limit in the compiler Previously, excessive nesting in expressions would blow the stack and segfault the interpreter. Now, a hard limit based on the configured recursion limit and a hardcoded scaling factor is applied. --- Python/compile.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Python/compile.c') diff --git a/Python/compile.c b/Python/compile.c index ff552204433..5016f99af3a 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -141,6 +141,11 @@ struct compiler_unit { The u pointer points to the current compilation unit, while units for enclosing blocks are stored in c_stack. The u and c_stack are managed by compiler_enter_scope() and compiler_exit_scope(). + +Note that we don't track recursion levels during compilation - the +task of detecting and rejecting excessive levels of nesting is +handled by the symbol analysis pass. + */ struct compiler { -- cgit v1.2.3