[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>maint
parent
aa16021efc
commit
025a0709b6
|
@ -440,11 +440,15 @@ int write_cache(int newfd, struct cache_entry **cache, int entries)
|
||||||
{
|
{
|
||||||
SHA_CTX c;
|
SHA_CTX c;
|
||||||
struct cache_header hdr;
|
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_signature = htonl(CACHE_SIGNATURE);
|
||||||
hdr.hdr_version = htonl(2);
|
hdr.hdr_version = htonl(2);
|
||||||
hdr.hdr_entries = htonl(entries);
|
hdr.hdr_entries = htonl(entries - removed);
|
||||||
|
|
||||||
SHA1_Init(&c);
|
SHA1_Init(&c);
|
||||||
if (ce_write(&c, newfd, &hdr, sizeof(hdr)) < 0)
|
if (ce_write(&c, newfd, &hdr, sizeof(hdr)) < 0)
|
||||||
|
|
Loading…
Reference in New Issue