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

Re: [PATCH] use strbuf_addbuf() for appending a strbuf to another

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 22, 2016, 16:22 UTC
Message-ID
<xmqqr3albq2s.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20160721210253.GA4604@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 9 quoted lines
> I don't think we do. Going back to the original discussion:
>
>   http://thread.gmane.org/gmane.comp.version-control.git/136141/focus=136774
>
> it was mostly just "hey, this would fail really confusingly if we ever
> did, so let's make it safe".
>
> The second strbuf_grow() is by definition a noop (which is why 81d2cae
> works at all), but we do pay the size-computation cost.

Both true. If the second one is not a noop, nothing is fixed by 81d2cae at all, but it is subtle.

René's update makes it far easier to understand what is going on.
Show 12 quoted lines
>> -- >8 --
>> Subject: strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()
>> 
>> Implement strbuf_addbuf() as a normal function in order to avoid calling
>> strbuf_grow() twice, with the second callinside strbud_add() being a
>> no-op.  This is slightly faster and also reduces the text size a bit.
>
> Seems reasonable.  IMHO the main advantage is that one does not have to
> reason about the double strbuf_grow() (i.e., that the strbuf_add() is
> safe because we know its grow is a noop).
>
> -Peff
Previous: Jeff King
Message 5 of 5 in “use strbuf_addbuf() for appending a strbuf to another”
  1. use strbuf_addbuf() for appending a strbuf to anotherRené Scharfe, Jul 19, 2016
  2. Jeff KingJul 20, 2016
  3. René ScharfeJul 21, 2016
  4. Jeff KingJul 21, 2016
  5. Junio C HamanoJul 22, 2016

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.