Brandon Casey <drafnel@xxxxxxxxx> writes: > 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. Yes but I highly suspect that it would be very compiler dependent and not something the language lawyers would recommend us to rely on. My response was primarily to answer "why?" with "because we did not bother". The above is a mere tangent, i.e. "multiple copies of empty strings is a horrible implementation (and there would be a way to do it with a single instance)". > #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. What is the main objective for doing this change? The "make sure we do not write into that slopbuf" assert() bothers you and you want to replace it with an address in the read-only segment?