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

Re: [PATCH] blame.c: Properly initialize strbuf after calling textconv_object(), again

From
Jeff King <peff@peff.net>
Date
Nov 7, 2011, 16:49 UTC
Message-ID
<20111107164946.GD27055@sigill.intra.peff.net>
In-Reply-To
<4EB7FEE6.9000609@gmail.com>
On Mon, Nov 07, 2011 at 04:53:10PM +0100, Sebastian Schuberth wrote:
Show 11 quoted lines
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -2114,7 +2114,7 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
>  		case S_IFREG:
>  			if (DIFF_OPT_TST(opt, ALLOW_TEXTCONV) &&
>  			    textconv_object(read_from, mode, null_sha1, &buf.buf, &buf_len)) {
> -				buf.alloc = buf_len;
> +				buf.alloc = buf_len + 1;
>  				buf.len = buf_len;
>  			}
>  			else if (strbuf_read_file(&buf, read_from, st.st_size) != st.st_size)

Your patch is correct in the sense that this fixes a bug, but it just seems wrong to be touching the alloc parameter outside of the strbuf code. It looks like the intent is to do the equivalent of:

  strbuf_add(&buf, some_heap_buf, len);
  free(some_heap_buf);

but avoid the extra allocation and copy. Should there be a "strbuf_attach" function to encapsulate this pattern?

-Peff
Previous: Sebastian SchuberthNext: Sebastian Schuberth
Message 4 of 6 in “blame.c: Properly initialize strbuf after calling textconv_object(), again”
  1. blame.c: Properly initialize strbuf after calling textconv_object(), againSebastian Schuberth, Nov 7, 2011
  2. Junio C HamanoNov 7, 2011
  3. Sebastian SchuberthNov 7, 2011
  4. Jeff KingNov 7, 2011
  5. [PATCHv2] blame.c: Properly initialize strbuf after calling textconv_object(), againSebastian Schuberth, Nov 7, 2011
  6. Jeff KingNov 7, 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.