Skip to content
Snippets Groups Projects
Commit 3507f6c7 authored by Matt Mackall's avatar Matt Mackall
Browse files

dirstate: eliminate reference cycle from normalize

Bound methods hold a reference to self, so assigning a bound method to
an instance unavoidably creates a cycle. Work around this by choosing
a normalize method at walk time instead. Eliminate default arg while
we're at it.
parent f037187a
No related branches found
No related tags found
No related merge requests found
......@@ -114,12 +114,6 @@
def _checkcase(self):
return not util.checkcase(self._join('.hg'))
@propertycache
def normalize(self):
if self._checkcase:
return self._normalize
return lambda x, y=False: x
def _join(self, f):
# much faster than os.path.join()
# it's safe because f is always a relative path
......@@ -345,7 +339,7 @@
except KeyError:
self._ui.warn(_("not in dirstate: %s\n") % f)
def _normalize(self, path, knownpath=False):
def _normalize(self, path, knownpath):
norm_path = os.path.normcase(path)
fold_path = self._foldmap.get(norm_path, None)
if fold_path is None:
......@@ -450,7 +444,6 @@
badfn = match.bad
dmap = self._map
normpath = util.normpath
normalize = self.normalize
listdir = osutil.listdir
lstat = os.lstat
getkind = stat.S_IFMT
......@@ -461,6 +454,11 @@
work = []
wadd = work.append
if self._checkcase:
normalize = self._normalize
else:
normalize = lambda x, y: x
exact = skipstep3 = False
if matchfn == match.exact: # match.exact
exact = True
......@@ -475,7 +473,7 @@
# step 1: find all explicit files
for ff in sorted(files):
nf = normalize(normpath(ff))
nf = normalize(normpath(ff), True)
if nf in results:
continue
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment