Issue 11802: filecmp cache was growing without bound.
diff --git a/Lib/filecmp.py b/Lib/filecmp.py
index 89a4835..4728317 100644
--- a/Lib/filecmp.py
+++ b/Lib/filecmp.py
@@ -48,11 +48,12 @@
if s1[1] != s2[1]:
return False
- result = _cache.get((f1, f2))
- if result and (s1, s2) == result[:2]:
- return result[2]
- outcome = _do_cmp(f1, f2)
- _cache[f1, f2] = s1, s2, outcome
+ outcome = _cache.get((f1, f2, s1, s2))
+ if outcome is None:
+ outcome = _do_cmp(f1, f2)
+ if len(_cache) > 100: # limit the maximum size of the cache
+ _cache.clear()
+ _cache[f1, f2, s1, s2] = outcome
return outcome
def _sig(st):
diff --git a/Misc/NEWS b/Misc/NEWS
index bddddfa..9e0b8f4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -16,6 +16,9 @@
Library
-------
+- Issue #11802: The cache in filecmp now has a maximum size of 100 so that
+ it won't grow without bound.
+
- Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira
Kitada.