diff --git a/unpack-trees.c b/unpack-trees.c
index 85045fd03fd7ab2a2ad8daf5ec584e010372673b..8cf0da317d8afe4bfe3cae7051e3a385d44cf7ef 100644 (file)
--- a/unpack-trees.c
+++ b/unpack-trees.c
const char *ce_name, *ce_slash;
int cmp, ce_len;
- if (!ce_in_traverse_path(ce, info))
+ if (ce->ce_flags & CE_UNPACKED) {
+ /*
+ * cache_bottom entry is already unpacked, so
+ * we can never match it; don't check it
+ * again.
+ */
+ if (pos == o->cache_bottom)
+ ++o->cache_bottom;
continue;
- if (ce->ce_flags & CE_UNPACKED)
+ }
+ if (!ce_in_traverse_path(ce, info))
continue;
ce_name = ce->name + pfxlen;
ce_slash = strchr(ce_name, '/');