Commit 1d313ab9 authored by Armin Rigo's avatar Armin Rigo

oh dear. Wrong manipulation. Committed a version of ceval.c from my

no-cyclic-comparison patch at the same time as errors.c.

Reverting ceval.c to the previous revision.
parent 092381a9
......@@ -510,29 +510,6 @@ Py_SetRecursionLimit(int new_limit)
recursion_limit = new_limit;
}
int
_Py_CheckRecursiveCall(char *where)
{
PyThreadState *tstate = PyThreadState_GET();
#ifdef USE_STACKCHECK
if (PyOS_CheckStack()) {
--tstate->recursion_depth;
PyErr_SetString(PyExc_MemoryError, "Stack overflow");
return -1;
}
#endif
if (tstate->recursion_depth > recursion_limit) {
--tstate->recursion_depth;
PyErr_Format(PyExc_RuntimeError,
"maximum recursion depth exceeded%s",
where);
return -1;
}
return 0;
}
/* Status code for main loop (reason for stack unwind) */
enum why_code {
......@@ -697,9 +674,21 @@ eval_frame(PyFrameObject *f)
if (f == NULL)
return NULL;
#ifdef USE_STACKCHECK
if (tstate->recursion_depth%10 == 0 && PyOS_CheckStack()) {
PyErr_SetString(PyExc_MemoryError, "Stack overflow");
return NULL;
}
#endif
/* push frame */
if (Py_EnterRecursiveCall(""))
if (++tstate->recursion_depth > recursion_limit) {
--tstate->recursion_depth;
PyErr_SetString(PyExc_RuntimeError,
"maximum recursion depth exceeded");
tstate->frame = f->f_back;
return NULL;
}
tstate->frame = f;
......@@ -721,7 +710,9 @@ eval_frame(PyFrameObject *f)
if (call_trace(tstate->c_tracefunc, tstate->c_traceobj,
f, PyTrace_CALL, Py_None)) {
/* Trace function raised an error */
goto exit_eval_frame;
--tstate->recursion_depth;
tstate->frame = f->f_back;
return NULL;
}
}
if (tstate->c_profilefunc != NULL) {
......@@ -731,7 +722,9 @@ eval_frame(PyFrameObject *f)
tstate->c_profileobj,
f, PyTrace_CALL, Py_None)) {
/* Profile function raised an error */
goto exit_eval_frame;
--tstate->recursion_depth;
tstate->frame = f->f_back;
return NULL;
}
}
}
......@@ -2435,8 +2428,7 @@ eval_frame(PyFrameObject *f)
reset_exc_info(tstate);
/* pop frame */
exit_eval_frame:
Py_LeaveRecursiveCall();
--tstate->recursion_depth;
tstate->frame = f->f_back;
return retval;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment