On Thu, Sep 27, 2007 at 06:21:24AM +0000, Junio C Hamano wrote: > 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