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

Re: Use of strbuf.buf when strbuf.len == 0

From
Pierre Habouzit <madcoder@debian.org>
Date
Sep 27, 2007, 10:13 UTC
Message-ID
<20070927101300.GD10289@artemis.corp>
In-Reply-To
<7vir5wy6fv.fsf@gitster.siamese.dyndns.org>
On Thu, Sep 27, 2007 at 06:21:24AM +0000, Junio C Hamano wrote:
Show 10 quoted lines
> It might be an easier and safer fix to define that strbuf_init()
> to always have allocation.  Use of a strbuf in the code _and_
> not adding any contents to the buffer should be an exception and
> avoiding malloc()/free() for that special case feels optimizing
> for the wrong case.
> 
> However, there are strbuf instances that are not initialized
> (i.e. in BSS or initialized by declaring with STRBUF_INIT), so
> we still need to handle (.len == 0 && .alloc == 0) case
> specially anyway.
  I can see a way, that would need special proof-reading of the strbuf
module, but should not harm its users, that would be to change
STRBUF_INIT to work this way:
  { .buf = "", .len = 0, .alloc = 0 }
  It needs to make strbuf_grow and strbuf_release check for ->alloc
before doing anything stupid.
  Though we may have some bits of code that rely on .buf being NULL if
nothing happened. I tried to track them down, but some may remain.
  If you agree with this change, that would solve most of the issues
with almost no cost, then I'll propose a new patch with this change.
-- 
·O·  Pierre Habouzit
··O                                                madcoder@debian.org
OOO                                                http://www.madism.org
Previous: Junio C HamanoNext: Pierre Habouzit
Message 2 of 10 in “Use of strbuf.buf when strbuf.len == 0”
  1. Junio C HamanoSep 27, 2007
  2. Pierre HabouzitSep 27, 2007
  3. 1/2 double free in builtin-update-index.cPierre Habouzit, Sep 27, 2007
  4. 2/2 strbuf change: be sure ->buf is never ever NULL.Pierre Habouzit, Sep 27, 2007
  5. Linus TorvaldsSep 29, 2007
  6. Pierre HabouzitSep 29, 2007
  7. Pierre HabouzitSep 27, 2007
  8. 1/1 Make read_patch_file work on a strbuf.Pierre Habouzit, Sep 27, 2007
  9. 1/1 Make read_patch_file work on a strbuf.Pierre Habouzit, Sep 27, 2007
  10. Pierre HabouzitSep 27, 2007

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.