Re: [PATCH] Support empty blob in fsck --lost-found
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 11, 2011, 20:43 UTC
- Message-ID
- <7vty8iolnj.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <A3964281-B24B-46C0-AE73-0CCB4C12556F@bjhargrave.com>
BJ Hargrave <bj@bjhargrave.com> writes:
Show 15 quoted lines
> 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);