diff options
author | Junio C Hamano <junkio@cox.net> | 2005-06-10 01:32:37 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-10 07:42:45 -0700 |
commit | 025a0709b6179506ffc0d35967bdd4fb804d30fb (patch) | |
tree | 1b59113cdd8f9bf33eb26c6334ffdede87a127de | |
parent | aa16021efcd969a44b480d0964e07d52167517db (diff) | |
download | git-025a0709b6179506ffc0d35967bdd4fb804d30fb.tar.gz git-025a0709b6179506ffc0d35967bdd4fb804d30fb.tar.xz |
[PATCH] Bugfix: read-cache.c:write_cache() misrecords number of entries.
When we choose to omit deleted entries, we should subtract
numbers of such entries from the total number in the header.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Oops.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | read-cache.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/read-cache.c b/read-cache.c index d358933b2..e9618f091 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) |