# HG changeset patch # User Mads Kiilerich # Date 1570925119 -7200 # Node ID 8864aa96f1f6d279ff2e57f29e0b139d709a0f1b # Parent 6ceb3721e2035aeaffdaa1941b20ddabc6a688ce localrepo: fix variable binding in handling of old filters The lambda was referencing oldfn in outer scope without binding the current value. If oldfn function were reassigned before use, wrong filters could be used. Fixed by having oldfn as named parameter default value of the lambda. diff -r 6ceb3721e203 -r 8864aa96f1f6 mercurial/localrepo.py --- a/mercurial/localrepo.py Sun Oct 13 14:40:00 2019 +0200 +++ b/mercurial/localrepo.py Sun Oct 13 02:05:19 2019 +0200 @@ -1907,7 +1907,7 @@ # Wrap old filters not supporting keyword arguments if not pycompat.getargspec(fn)[2]: oldfn = fn - fn = lambda s, c, **kwargs: oldfn(s, c) + fn = lambda s, c, oldfn=oldfn, **kwargs: oldfn(s, c) fn.__name__ = 'compat-' + oldfn.__name__ l.append((mf, fn, params)) self._filterpats[filter] = l