From: Andrew M. Kuchling Date: Sat, 5 Jun 2004 14:14:49 +0000 (+0000) Subject: [Bug #954364] inspect.getframeinfo() sometimes produces incorrect traceback line... X-Git-Tag: v2.3.5c1~220 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=832166025a3f7e679ce669d42419572a947ff46c;p=thirdparty%2FPython%2Fcpython.git [Bug #954364] inspect.getframeinfo() sometimes produces incorrect traceback line #s; fix is to look at tb.tb_lineno, not tb.frame.f_lineno. Patch from Robin Becker and me. --- diff --git a/Lib/inspect.py b/Lib/inspect.py index 1f49bcb3a197..bc6033328f4a 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -739,12 +739,14 @@ def getframeinfo(frame, context=1): The optional second argument specifies the number of lines of context to return, which are centered around the current line.""" if istraceback(frame): + lineno = frame.tb_lineno frame = frame.tb_frame + else: + lineno = frame.f_lineno if not isframe(frame): raise TypeError('arg is not a frame or traceback object') filename = getsourcefile(frame) or getfile(frame) - lineno = frame.f_lineno if context > 0: start = lineno - 1 - context//2 try: diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 3ff08b7d8a8c..bdbec41ff458 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -158,8 +158,8 @@ istest(inspect.istraceback, 'git.ex[2]') istest(inspect.isframe, 'mod.fr') test(len(git.tr) == 3, 'trace() length') -test(git.tr[0][1:] == (TESTFN, 46, 'argue', - [' self.tr = inspect.trace()\n'], 0), +test(git.tr[0][1:] == (TESTFN, 43, 'argue', + [' spam(a, b, c)\n'], 0), 'trace() row 2') test(git.tr[1][1:] == (TESTFN, 9, 'spam', [' eggs(b + d, c + f)\n'], 0), 'trace() row 2') diff --git a/Misc/NEWS b/Misc/NEWS index 4a91a6645a75..52da68f261e9 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -18,6 +18,8 @@ Extension modules - Bug #841757: xmlrpclib failed on structs with Unicode keys. +- Bug #954364: inspect.getframeinfo() sometimes produces incorrect traceback + line numbers What's New in Python 2.3.4 (final)? ===================================