gh-101517: make bdb avoid looking up in linecache with lineno=None (#101787)

This commit is contained in:
Irit Katriel 2023-02-10 16:49:29 +00:00 committed by GitHub
parent 5d15224011
commit 366b949058
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 3 deletions

View File

@ -570,9 +570,10 @@ class Bdb:
rv = frame.f_locals['__return__']
s += '->'
s += reprlib.repr(rv)
line = linecache.getline(filename, lineno, frame.f_globals)
if line:
s += lprefix + line.strip()
if lineno is not None:
line = linecache.getline(filename, lineno, frame.f_globals)
if line:
s += lprefix + line.strip()
return s
# The following methods can be called by clients to use

View File

@ -1203,5 +1203,11 @@ class IssuesTestCase(BaseTestCase):
tracer.runcall(tfunc_import)
class TestRegressions(unittest.TestCase):
def test_format_stack_entry_no_lineno(self):
# See gh-101517
Bdb().format_stack_entry((sys._getframe(), None))
if __name__ == "__main__":
unittest.main()

View File

@ -0,0 +1 @@
Fixed bug where :mod:`bdb` looks up the source line with :mod:`linecache` with a ``lineno=None``, which causes it to fail with an unhandled exception.