diff --git a/read-cache.c b/read-cache.c index d358933b26991408268c40c428eee75333793582..e9618f0914b36a4d1bd60785e53ad484e8748e36 100644 --- a/read-cache.c +++ b/read-cache.c @@ -440,11 +440,15 @@ int write_cache(int newfd, struct cache_entry **cache, int entries) { SHA_CTX c; struct cache_header hdr; - int i; + int i, removed; + + for (i = removed = 0; i < entries; i++) + if (!cache[i]->ce_mode) + removed++; hdr.hdr_signature = htonl(CACHE_SIGNATURE); hdr.hdr_version = htonl(2); - hdr.hdr_entries = htonl(entries); + hdr.hdr_entries = htonl(entries - removed); SHA1_Init(&c); if (ce_write(&c, newfd, &hdr, sizeof(hdr)) < 0)