Jelle Zijlstra added the comment:

The reason for this behavior is that the trace function is called whenever 
execution in the bytecode jumps to a new source line. See ceval.c line 4440 or 
so:

    /* 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 call the trace function. */

Running dis.dis on x in the example file shows that the bytecode for returning 
None is assigned to the "pass" line.

I think the bug here is really with the line number assignment in the bytecode, 
not with the tracing, but I don't see an obvious way to fix it.

----------
nosy: +Jelle Zijlstra

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue13548>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to