From: Raymond Hettinger Date: Sat, 25 Jun 2011 15:20:21 +0000 (+0200) Subject: Issue 11802: filecmp cache was growing without bound. X-Git-Tag: v3.2.1rc2~52 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=70797194ab678d53bb1c24536354aa1acc4db467;p=thirdparty%2FPython%2Fcpython.git Issue 11802: filecmp cache was growing without bound. --- diff --git a/Lib/filecmp.py b/Lib/filecmp.py index e5983cd77694..f5cea1de6ff0 100644 --- a/Lib/filecmp.py +++ b/Lib/filecmp.py @@ -48,11 +48,12 @@ def cmp(f1, f2, shallow=True): 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):