git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Make remaining usage strings and string tables const

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 21, 2025, 20:30 UTC
Message-ID
<xmqqv7qx5kb7.fsf@gitster.g>
In-Reply-To
<daj53eijkqzsjy5cvuxchea4qm3pbiu673ehetihfffyvwzhgs@tarta.nabijaczleweli.xyz>
Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> writes:
> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
> ---

I've looked at these changes (I wouldn't claim with fine toothed comb, though) and they looked correct. Most of the changes are to ensure not just the strings are not writable through the pointers in the arrays but the arrays themselves cannot be modified to hold pionters that point elsewhere.

Functions like parse_revision_opt() declare their parameter for the usage string array as

	const char *const usagestr[]

but that merely promises to the caller that the function would not touch the strings or the pointers in the incoming array, so the callers declaring the array they pass, like blame_opt_usage[] here,

Show 7 quoted lines
> -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.

Thanks.
Previous: Ahelenia ZiemiańskaNext: Ahelenia Ziemiańska
Message 2 of 3 in “Make remaining usage strings and string tables const”
  1. Make remaining usage strings and string tables constAhelenia Ziemiańska, Apr 21, 2025
  2. Junio C HamanoApr 21, 2025
  3. Ahelenia ZiemiańskaApr 21, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.