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

Re: [PATCH] submodule--helper: avoid use of %zu for now

From
Adrian Ratiu <adrian.ratiu@collabora.com>
Date
Jul 16, 2026, 12:40 UTC
Message-ID
<87a4rrxg3r.fsf@gentoo.mail-host-address-is-not-set>
In-Reply-To
<xmqq4ii0ko9t.fsf@gitster.g>
On Wed, 15 Jul 2026, Junio C Hamano <gitster@pobox.com> wrote:
Show 42 quoted lines
> Since d7d850e2b9 (CodingGuidelines: mention C99 features we can't
> use, 2022-10-10), our CodingGuidelines document has explicitly
> forbidden the use of '%z' and '%zu' printf() format specifiers,
> even though C99 does support them.  However, a new instance crept
> in via 82c36fa0a9 (submodule: hash the submodule name for the
> gitdir path, 2026-01-12).
>
> We could claim that this is an unintentional weather balloon that
> nobody has complained about for the past six months since Git 2.54,
> proving that it is now safe to use these format specifiers.  But
> (1) it is probably too early to make that claim, as distributions
> often stick to a stale version for several releases, and (2) it is
> unlikely that a failure in this code path would manifest as a
> major user-visible breakage that would trigger a failure report to
> percolate down to us.
>
> Instead, let's stick to the established workaround recommended by
> our CodingGuidelines, which is to cast the value to (uintmax_t) and
> format it with PRIuMAX, at least for now.  Even if we eventually
> perform a bulk update using a Coccinelle script to transition to %z
> and %zu in the future, adding one more instance to the pile that
> will need such a conversion is hardly a tragedy.
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>  builtin/submodule--helper.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git i/builtin/submodule--helper.c w/builtin/submodule--helper.c
> index 1cc82a134d..92e38106c1 100644
> --- i/builtin/submodule--helper.c
> +++ w/builtin/submodule--helper.c
> @@ -549,7 +549,8 @@ static void create_default_gitdir_config(const char *submodule_name)
>  	}
>  
>  	/* Case 2.4: If all the above failed, try a hash of the name as a last resort */
> -	header_len = snprintf(header, sizeof(header), "blob %zu", strlen(submodule_name));
> +	header_len = snprintf(header, sizeof(header),
> +			      "blob %"PRIuMAX, (uintmax_t)strlen(submodule_name));
>  	the_hash_algo->init_fn(&ctx);
>  	the_hash_algo->update_fn(&ctx, header, header_len);
>  	the_hash_algo->update_fn(&ctx, "\0", 1);
LGTM and sorry for not following the guideline. :)
Previous: Junio C HamanoNext: Junio C Hamano
Message 2 of 3 in “submodule--helper: avoid use of %zu for now”
  1. submodule--helper: avoid use of %zu for nowJunio C Hamano, Jul 15, 2026
  2. Adrian RatiuJul 16, 2026
  3. Junio C HamanoJul 16, 2026

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.