Re: Use of strbuf.buf when strbuf.len == 0
- From
Linus Torvalds <torvalds@linux-foundation.org>
- Date
- Sep 29, 2007, 00:51 UTC
- Message-ID
- <alpine.LFD.0.999.0709281746500.3579@woody.linux-foundation.org>
- In-Reply-To
- <20070927101300.GD10289@artemis.corp>
On Thu, 27 Sep 2007, Pierre Habouzit wrote:
Show 6 quoted lines
>
> 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 }I'd like to pipe up a bit here..
I think the above is a good fix for the current problem of wanting to always be able to use "sb->buf", but I thinkit actually has the potential to fix another issue entirely.
Namely strbuf's that are initialized from various static strings and/or strings not directly allocated with malloc().
That's not necessarily something really unusual. Wanting to initialize a string with a fixed constant value is a common problem.
And wouldn't it be nice if you could actually do that, with
{ .buf = "static initializer", .len = 18, .alloc = 0 }and have all the strbuf routines that modify the initializer (including making it shorter!) notice that the allocation is too short, and create a new allocation?
Hmm?
Linus