diff --git a/Lib/linecache.py b/Lib/linecache.py index 3462f1c451ba29..f8eed1260516b1 100644 --- a/Lib/linecache.py +++ b/Lib/linecache.py @@ -98,7 +98,7 @@ def updatecache(filename, module_globals=None): fullname = filename try: stat = os.stat(fullname) - except OSError: + except (OSError, ValueError): basename = filename # Realise a lazy loader based lookup if there is one @@ -135,7 +135,7 @@ def updatecache(filename, module_globals=None): try: stat = os.stat(fullname) break - except OSError: + except (OSError, ValueError): pass else: return [] diff --git a/Lib/test/test_linecache.py b/Lib/test/test_linecache.py index 8ac521d72ef13e..e8b3bd9602812f 100644 --- a/Lib/test/test_linecache.py +++ b/Lib/test/test_linecache.py @@ -280,6 +280,10 @@ def test_loader(self): self.assertEqual(linecache.getlines(filename, module_globals), ['source for x.y.z\n']) + @unittest.skipUnless(support.MS_WINDOWS, "Test only relevant in Windows.") + def test_filename_too_long(self): + self.assertEqual(linecache.updatecache("s" * 999999), []) + class LineCacheInvalidationTests(unittest.TestCase): def setUp(self):