X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=name-hash.c;h=d8d25c23e99dddd9bd0bf83d73f2ae136d7307b5;hb=b52ab19d91015ebd6bebc83a82b2c3d64b948b36;hp=c6b6a3fe4cd94e48893b172c17b6e7df3bfa36f8;hpb=6d1cdadbeeb03f40250526e29b1f1a91582911d8;p=git.git diff --git a/name-hash.c b/name-hash.c index c6b6a3fe4..d8d25c23e 100644 --- a/name-hash.c +++ b/name-hash.c @@ -57,12 +57,10 @@ static void hash_index_entry_directories(struct index_state *istate, struct cach if (*ptr == '/') { ++ptr; hash = hash_name(ce->name, ptr - ce->name); - if (!lookup_hash(hash, &istate->name_hash)) { - pos = insert_hash(hash, ce, &istate->name_hash); - if (pos) { - ce->next = *pos; - *pos = ce; - } + pos = insert_hash(hash, ce, &istate->name_hash); + if (pos) { + ce->dir_next = *pos; + *pos = ce; } } } @@ -76,7 +74,7 @@ static void hash_index_entry(struct index_state *istate, struct cache_entry *ce) if (ce->ce_flags & CE_HASHED) return; ce->ce_flags |= CE_HASHED; - ce->next = NULL; + ce->next = ce->dir_next = NULL; hash = hash_name(ce->name, ce_namelen(ce)); pos = insert_hash(hash, ce, &istate->name_hash); if (pos) { @@ -166,7 +164,10 @@ struct cache_entry *index_name_exists(struct index_state *istate, const char *na if (same_name(ce, name, namelen, icase)) return ce; } - ce = ce->next; + if (icase && name[namelen - 1] == '/') + ce = ce->dir_next; + else + ce = ce->next; } /*