From 2c316a3e298b072f1f017cd3ba197905c43af926 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sat, 25 Jun 2011 17:14:53 +0200 Subject: Issue 11802: filecmp cache was growing without bound. --- Lib/filecmp.py | 11 ++++++----- Misc/NEWS | 3 +++ 2 files changed, 9 insertions(+), 5 deletions(-) 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 @@ def cmp(f1, f2, shallow=1): 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 @@ Core and Builtins 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. -- cgit v0.12