mirror of https://github.com/python/cpython
New version of tb_lineno(), this time *not* using try-except, to avoid
disturbing the current exception, and returning tb.tb_lineno, which is the line number of thr traceback, rather than the current line number. By Jim Hugunin.
This commit is contained in:
parent
2474d68548
commit
6e73af723c
|
@ -186,16 +186,16 @@ def extract_stack(f=None, limit = None):
|
|||
# with -O on).
|
||||
# Coded by Marc-Andre Lemburg from the example of PyCode_Addr2Line()
|
||||
# in compile.c.
|
||||
# Revised version by Jim Hugunin to work with JPython too.
|
||||
|
||||
def tb_lineno(tb):
|
||||
f = tb.tb_frame
|
||||
try:
|
||||
c = f.f_code
|
||||
c = tb.tb_frame.f_code
|
||||
if not hasattr(c, 'co_lnotab'):
|
||||
return tb.tb_lineno
|
||||
|
||||
tab = c.co_lnotab
|
||||
line = c.co_firstlineno
|
||||
stopat = tb.tb_lasti
|
||||
except AttributeError:
|
||||
return f.f_lineno
|
||||
addr = 0
|
||||
for i in range(0, len(tab), 2):
|
||||
addr = addr + ord(tab[i])
|
||||
|
|
Loading…
Reference in New Issue