Re: [PATCH] Support empty blob in fsck --lost-found
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:52:01
BJ Hargrave [off-list ref] writes:
quoted hunk
diff --git a/builtin/fsck.c b/builtin/fsck.c index 5ae0366..ad6d713 100644 --- a/builtin/fsck.c +++ b/builtin/fsck.c@@ -232,9 +232,10 @@ static void check_unreachable_object(struct object *obj) char *buf = read_sha1_file(obj->sha1, &type, &size); if (buf) { - if (fwrite(buf, size, 1, f) != 1) - die_errno("Could not write '%s'", - filename); + if (size > 0) + if (fwrite(buf, size, 1, f) != 1) + die_errno("Could not write '%s'", + filename);
Funny.
I am sure we fixed a similar breakage elsewhere a few years ago, by
swapping the size and nmemb to the calls (i.e. instead of writing one
block of "size" bytes, you could write "size" blocks of 1-byte) and making
sure fwrite() reports the number of items. IOW
if (buf && fwrite(buf, 1, size, f) != size)
die_errno("Could not write '%s'", filename);