Re: [PATCH] Make remaining usage strings and string tables const
On Mon, Apr 21, 2025 at 01:30:36PM -0700, Junio C Hamano wrote:
Show 12 quoted lines
> Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> writes:
> > -static const char *blame_opt_usage[] = {
> > +static const char *const blame_opt_usage[] = {
> > blame_usage,
> > "",
> > N_("<rev-opts> are documented in git-rev-list(1)"),
> > NULL
> > };
> much looser to allow swapping the pointers in the array is *not* a
> problem per-se, but as long as the compiler would not barf after
> this patch, we know these callers that use these arrays are not
> doing such mutations to these arrays themselves, so it is good.This built for me on Debian and the resulting binary worked so there's
no obvious sneaky const-incorrectness; it only resulted in one error,
where one of these variables was assigned to a
const char * *opt_usage;
instead of a
const char *const *opt_usage;
this has been obviously fixed and is part of this submission.
I came across this as I was debugging some other issue
(that ended up as me holding it wrong),
static const char *s in library functions appeared quite pervasive,
but those aren't really possible to identify and close semi-automatically
(and it's unclear to me if a tighter analysis scope allows the compiler
to actually put the static in .rodata or eliminate it outright).
Best,