Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 35343:dd4357a5da7c 2.4
Fix for SF bug # 900092, hotshot.stats.load assertion failure. This patch
restores the tracing of a 'return' event for exceptions that cause a function
to exit. Also, update the unit test.
I will port to Python 2.5.
| author | Barry Warsaw <barry@python.org> |
|---|---|
| date | Mon, 15 Aug 2005 17:32:56 +0000 |
| parents | be370abb020f |
| children | 90bb71122257 |
line wrap: on
line diff
--- a/Python/ceval.c Sat Aug 13 09:06:24 2005 +0000 +++ b/Python/ceval.c Mon Aug 15 17:32:56 2005 +0000 @@ -2462,14 +2462,20 @@ fast_yield: if (tstate->use_tracing) { - if (tstate->c_tracefunc - && (why == WHY_RETURN || why == WHY_YIELD)) { - if (call_trace(tstate->c_tracefunc, - tstate->c_traceobj, f, - PyTrace_RETURN, retval)) { - Py_XDECREF(retval); - retval = NULL; - why = WHY_EXCEPTION; + if (tstate->c_tracefunc) { + if (why == WHY_RETURN || why == WHY_YIELD) { + if (call_trace(tstate->c_tracefunc, + tstate->c_traceobj, f, + PyTrace_RETURN, retval)) { + Py_XDECREF(retval); + retval = NULL; + why = WHY_EXCEPTION; + } + } + else if (why == WHY_EXCEPTION) { + call_trace_protected(tstate->c_tracefunc, + tstate->c_traceobj, f, + PyTrace_RETURN); } } if (tstate->c_profilefunc) {
