Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 14308:b8b3f76ffd51 legacy-trunk
add user-modifiable recursion_limit
ceval.c:
define recurion_limit (static), default value is 2500
define Py_GetRecursionLimit and Py_SetRecursionLimit
raise RuntimeError if limit is exceeded
PC/config.h:
remove plat-specific definition
sysmodule.c:
add sys.(get|set)recursionlimit
| author | Jeremy Hylton <jeremy@alum.mit.edu> |
|---|---|
| date | Thu, 31 Aug 2000 19:23:01 +0000 |
| parents | cd8b815cb196 |
| children | 33c7df0c549d |
line wrap: on
line diff
--- a/Python/ceval.c Thu Aug 31 19:04:07 2000 +0000 +++ b/Python/ceval.c Thu Aug 31 19:23:01 2000 +0000 @@ -298,6 +298,20 @@ } +/* The interpreter's recursion limit */ + +static int recursion_limit = 2500; + +int Py_GetRecursionLimit(void) +{ + return recursion_limit; +} + +void Py_SetRecursionLimit(int new_limit) +{ + recursion_limit = new_limit; +} + /* Status code for main loop (reason for stack unwind) */ enum why_code { @@ -326,10 +340,6 @@ /* Interpreter main loop */ -#ifndef MAX_RECURSION_DEPTH -#define MAX_RECURSION_DEPTH 10000 -#endif - static PyObject * eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals, PyObject **args, int argcount, PyObject **kws, int kwcount, @@ -565,7 +575,7 @@ } } - if (++tstate->recursion_depth > MAX_RECURSION_DEPTH) { + if (++tstate->recursion_depth > recursion_limit) { --tstate->recursion_depth; PyErr_SetString(PyExc_RuntimeError, "Maximum recursion depth exceeded");
