Mercurial > hg
diff mercurial/localrepo.py @ 43202:8864aa96f1f6
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.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sun, 13 Oct 2019 02:05:19 +0200 |
parents | 6ceb3721e203 |
children | a0916e8819f6 |
line wrap: on
line diff
--- 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