mirror of
https://github.com/python/cpython.git
synced 2025-12-23 09:19:18 +00:00
Issue #23838: linecache now clears the cache and returns an empty result on
MemoryError.
This commit is contained in:
commit
05ddbf0875
3 changed files with 25 additions and 7 deletions
|
|
@ -40,11 +40,14 @@ def getlines(filename, module_globals=None):
|
|||
|
||||
if filename in cache:
|
||||
entry = cache[filename]
|
||||
if len(entry) == 1:
|
||||
return updatecache(filename, module_globals)
|
||||
return cache[filename][2]
|
||||
else:
|
||||
if len(entry) != 1:
|
||||
return cache[filename][2]
|
||||
|
||||
try:
|
||||
return updatecache(filename, module_globals)
|
||||
except MemoryError:
|
||||
clearcache()
|
||||
return []
|
||||
|
||||
|
||||
def checkcache(filename=None):
|
||||
|
|
|
|||
|
|
@ -169,9 +169,21 @@ class LineCacheTests(unittest.TestCase):
|
|||
linecache.lazycache(NONEXISTENT_FILENAME, globals()))
|
||||
self.assertEqual(4, len(linecache.cache[NONEXISTENT_FILENAME]))
|
||||
|
||||
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)
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_main()
|
||||
unittest.main()
|
||||
|
|
|
|||
|
|
@ -13,6 +13,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #23838: linecache now clears the cache and returns an empty result on
|
||||
MemoryError.
|
||||
|
||||
- Issue #10395: Added os.path.commonpath(). Implemented in posixpath and ntpath.
|
||||
Based on patch by Rafik Draoui.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue