Issue #23838: linecache now clears the cache and returns an empty result on
MemoryError.
diff --git a/Lib/linecache.py b/Lib/linecache.py
index 6e65c37..3afcce1 100644
--- a/Lib/linecache.py
+++ b/Lib/linecache.py
@@ -40,11 +40,14 @@
 
     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):