Patrick Steinhardt [off-list ref] writes:
Now that I revisit this commit I'm not quite happy with it anymore. We
still need to have the cast, which is somewhat awkward. I think the
better solution is to instead have a `comment_line_str_allocated`
variable that is non-constant. I'll adapt the code accordingly.
An even better solution would be to have `struct strbuf` provide an
initializer that populates it with a string constant. But that feels
like a larger undertaking, so I'll leave that for the future.
FWIW, I found the "now we have a variable to refer to the address of
the string constant, we can compare to detect if we allocated and
need to free" in this round is a good place to stop.
I view the approach to use an auxiliary variable *_allocated is a
regression compared to what we see here. The approach makes it easy
to forget to futz it when an allocated piece of memory is assigned
to the main variable.