aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/sysmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/sysmodule.c')
-rw-r--r--Python/sysmodule.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 27937a03e89..3e2091e70ab 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1187,20 +1187,14 @@ sys_setrecursionlimit_impl(PyObject *module, int new_limit)
return NULL;
}
- /* Issue #25274: When the recursion depth hits the recursion limit in
- _Py_CheckRecursiveCall(), the overflowed flag of the thread state is
- set to 1 and a RecursionError is raised. The overflowed flag is reset
- to 0 when the recursion depth goes below the low-water mark: see
- Py_LeaveRecursiveCall().
-
- Reject too low new limit if the current recursion depth is higher than
- the new low-water mark. Otherwise it may not be possible anymore to
- reset the overflowed flag to 0. */
- if (tstate->recursion_depth >= new_limit) {
+ /* Reject too low new limit if the current recursion depth is higher than
+ the new low-water mark. */
+ int depth = tstate->recursion_limit - tstate->recursion_remaining;
+ if (depth >= new_limit) {
_PyErr_Format(tstate, PyExc_RecursionError,
"cannot set the recursion limit to %i at "
"the recursion depth %i: the limit is too low",
- new_limit, tstate->recursion_depth);
+ new_limit, depth);
return NULL;
}