On Wed, Aug 23, 2017 at 2:20 PM, Brandon Casey <[email protected]> wrote:
> On Wed, Aug 23, 2017 at 2:04 PM, Junio C Hamano <[email protected]> wrote:
>> Brandon Casey <[email protected]> writes:
>>
>>> So is there any reason why didn't do something like the following in
>>> the first place?
>>
>> My guess is that we didn't bother; if we cared, we would have used a
>> single instance of const char in a read-only segment, instead of
>> such a macro.
>
> I think you mean something like this:
>
> const char * const strbuf_slopbuf = "";
Ah, you probably meant something like this:
const char strbuf_slopbuf = '\0';
which gcc will apparently place in the read-only segment. I did not know that.
And assignment and initialization would look like:
sb->buf = (char*) &strbuf_slopbuf;
and
#define STRBUF_INIT { .alloc = 0, .len = 0, .buf = (char*) &strbuf_slopbuf }
respectively. Yeah, that's definitely preferable to a macro.
Something similar could be done in object.c.
-Brandon