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");