Issue #23838: linecache now clears the cache and returns an empty result on
MemoryError.
This commit is contained in:
parent
bd8c629eb5
commit
43b49593e7
|
@ -36,8 +36,12 @@ def getlines(filename, module_globals=None):
|
|||
|
||||
if filename in cache:
|
||||
return cache[filename][2]
|
||||
else:
|
||||
|
||||
try:
|
||||
return updatecache(filename, module_globals)
|
||||
except MemoryError:
|
||||
clearcache()
|
||||
return []
|
||||
|
||||
|
||||
def checkcache(filename=None):
|
||||
|
|
|
@ -124,6 +124,22 @@ class LineCacheTests(unittest.TestCase):
|
|||
self.assertEqual(line, getline(source_name, index + 1))
|
||||
source_list.append(line)
|
||||
|
||||
def test_memoryerror(self):
|
||||
lines = linecache.getlines(FILENAME)
|
||||
self.assertTrue(lines)
|
||||
def raise_memoryerror(*args, **kwargs):
|
||||
raise MemoryError
|
||||
with support.swap_attr(linecache, 'updatecache', raise_memoryerror):
|
||||
lines2 = linecache.getlines(FILENAME)
|
||||
self.assertEqual(lines2, lines)
|
||||
|
||||
linecache.clearcache()
|
||||
with support.swap_attr(linecache, 'updatecache', raise_memoryerror):
|
||||
lines3 = linecache.getlines(FILENAME)
|
||||
self.assertEqual(lines3, [])
|
||||
self.assertEqual(linecache.getlines(FILENAME), lines)
|
||||
|
||||
|
||||
def test_main():
|
||||
support.run_unittest(LineCacheTests)
|
||||
|
||||
|
|
|
@ -21,6 +21,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #23838: linecache now clears the cache and returns an empty result on
|
||||
MemoryError.
|
||||
|
||||
- Issue #23742: ntpath.expandvars() no longer loses unbalanced single quotes.
|
||||
|
||||
- Issue #21802: The reader in BufferedRWPair now is closed even when closing
|
||||
|
|
Loading…
Reference in New Issue