diff -r 0941ee76489e -r fb74e1e69da0 mercurial/dirstate.py --- a/mercurial/dirstate.py Sun May 31 15:20:31 2009 -0400 +++ b/mercurial/dirstate.py Sun May 31 17:54:18 2009 -0500 @@ -509,17 +509,16 @@ results[nf] = None except OSError, inst: keep = False - prefix = nf + "/" - for fn in dmap: - if nf == fn: - if matchfn(nf): - results[nf] = None - keep = True - break - elif fn.startswith(prefix): - dostep3 = True - keep = True - break + if nf in dmap: # does it exactly match a file? + results[nf] = None + keep = True + else: # does it match a directory? + prefix = nf + "/" + for fn in dmap: + if fn.startswith(prefix): + dostep3 = True + keep = True + break if not keep: if inst.errno != errno.ENOENT: fwarn(ff, inst.strerror)