diff --git a/read-cache.c b/read-cache.c
index 0d949f691d598905b1774821965439f96e3348ce..e9618f0914b36a4d1bd60785e53ad484e8748e36 100644 (file)
--- a/read-cache.c
+++ b/read-cache.c
{
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)
for (i = 0; i < entries; i++) {
struct cache_entry *ce = cache[i];
+ if (!ce->ce_mode)
+ continue;
if (ce_write(&c, newfd, ce, ce_size(ce)) < 0)
return -1;
}