From: George King Date: Thu, 19 Oct 2017 00:44:22 +0000 (-0700) Subject: Move opcode tracing to occur after the possible update to f_lineno. (GH-3798) X-Git-Tag: v3.7.0a3~343 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=20faa68bbb912a7b7b056477f5966eff51ff0a65;p=python Move opcode tracing to occur after the possible update to f_lineno. (GH-3798) --- diff --git a/Python/ceval.c b/Python/ceval.c index 86ffec42b3..0f7a40c45c 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -4416,10 +4416,6 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj, *instr_lb = bounds.ap_lower; *instr_ub = bounds.ap_upper; } - /* Always emit an opcode event if we're tracing all opcodes. */ - if (frame->f_trace_opcodes) { - result = call_trace(func, obj, tstate, frame, PyTrace_OPCODE, Py_None); - } /* If the last instruction falls at the start of a line or if it represents a jump backwards, update the frame's line number and then call the trace function if we're tracing source lines. @@ -4430,6 +4426,10 @@ maybe_call_line_trace(Py_tracefunc func, PyObject *obj, result = call_trace(func, obj, tstate, frame, PyTrace_LINE, Py_None); } } + /* Always emit an opcode event if we're tracing all opcodes. */ + if (frame->f_trace_opcodes) { + result = call_trace(func, obj, tstate, frame, PyTrace_OPCODE, Py_None); + } *instr_prev = frame->f_lasti; return result; }