Message384502
It looks like you are accessing the c field "f_lineno" directly.
That was never guaranteed to work, it just happened to.
You should use PyFrame_GetLineNumber()
If "f_lineno" is up to date, then it will be almost efficient as the direct field access (the overhead is a C call).
If "f_lineno" is not up to date, PyFrame_GetLineNumber() will compute the correct value.
In the interest of efficiency it makes sense that the internal f_line field is updated before CALL and RETURN trace events.
I'll make that change, but you really ought to use the API rather than probing into the frame internals. |
|
Date |
User |
Action |
Args |
2021-01-06 13:29:41 | Mark.Shannon | set | recipients:
+ Mark.Shannon, nedbat |
2021-01-06 13:29:41 | Mark.Shannon | set | messageid: <1609939781.16.0.96509898455.issue42823@roundup.psfhosted.org> |
2021-01-06 13:29:41 | Mark.Shannon | link | issue42823 messages |
2021-01-06 13:29:40 | Mark.Shannon | create | |
|