mirror of https://github.com/python/cpython
call_trace(): A fix for PR#73, if an exception occurred in the
tracefunc (or profilefunc -- we're not sure which), zap the global trace and profile funcs so that we can't get into recursive loop when instantiating the resulting class based exception.
This commit is contained in:
parent
71eb8644d7
commit
f6202635f9
|
@ -2201,6 +2201,14 @@ call_trace(p_trace, p_newtrace, f, msg, arg)
|
|||
Py_XDECREF(*p_newtrace);
|
||||
*p_newtrace = NULL;
|
||||
}
|
||||
/* to be extra double plus sure we don't get recursive
|
||||
* calls inf either tracefunc or profilefunc gets an
|
||||
* exception, zap the global variables.
|
||||
*/
|
||||
Py_XDECREF(tstate->sys_tracefunc);
|
||||
tstate->sys_tracefunc = NULL;
|
||||
Py_XDECREF(tstate->sys_profilefunc);
|
||||
tstate->sys_profilefunc = NULL;
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Reference in New Issue