git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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);
Previous: Sverre RabbelierNext: BJ Hargrave
Message 5 of 7 in “Support empty blob in fsck --lost-found”
  1. Support empty blob in fsck --lost-foundBJ Hargrave, Sep 11, 2011
  2. Sverre RabbelierSep 11, 2011
  3. BJ HargraveSep 11, 2011
  4. Sverre RabbelierSep 11, 2011
  5. Junio C HamanoSep 11, 2011
  6. BJ HargraveSep 11, 2011
  7. Junio C HamanoSep 12, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.