From: Junio C Hamano <gitster@pobox.com>
To: Patrick Steinhardt <ps@pks.im>
Cc: Jeff King <peff@peff.net>,
git@vger.kernel.org, Collin Funk <collin.funk1@gmail.com>,
Michael J Gruber <git@grubix.eu>
Subject: Re: [PATCH 12/12] refs/files-backend: drop const to fix strchr() warning
Date: Wed, 01 Apr 2026 15:22:48 -0700 [thread overview]
Message-ID: <xmqqzf3mtj5z.fsf@gitster.g> (raw)
In-Reply-To: <ac0h0xwqLdX5u51v@pks.im> (Patrick Steinhardt's message of "Wed, 1 Apr 2026 15:46:59 +0200")
Patrick Steinhardt <ps@pks.im> writes:
> On Tue, Mar 31, 2026 at 07:53:41PM -0400, Jeff King wrote:
>> In show_one_reflog_ent(), we're fed a writable strbuf buffer, which we
>> parse into the various reflog components. We write a NUL over email_end
>> to tie off one of the fields, and thus email_end must be non-const.
>>
>> But with a C23 implementation of libc, strchr() will now complain when
>> assigning the result to a non-const pointer from a const one. So we can
>> fix this by making the source pointer non-const.
>>
>> But there's a catch. We derive that source pointer by parsing the line
>> with parse_oid_hex_algop(), which requires a const pointer for its
>> out-parameter. We can work around that by teaching it to use our
>> CONST_OUTPARAM() trick, just like skip_prefix(). Note that unlike
>> skip_prefix(), the function is not inline, so we can't just wrap it
>> using the same name (otherwise the actual definition would expand the
>> macro, which breaks compilation). So we rename the actual function with
>> an "_impl" suffix, and callers will all use the macro.
>
> Fair. In fact, I was a bit torn with the other commits whether it's nice
> to reuse the same name. I guess what it buys us is that you cannot
> accidentally call the wrong function without the guardrails. Even though
> that's quite unlikely with the `_impl` suffix.
I share the sentiment. If I were deciding the design, I'd even go
forcing the _impl suffix to everything, including the inline ones,
as I found the earlier "strip_prefix()" example already confusing.
next prev parent reply other threads:[~2026-04-01 22:22 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-31 23:38 [PATCH 0/12] fixing the remainder of the C23 strchr warnings Jeff King
2026-03-31 23:41 ` [PATCH 01/12] convert: add const to fix strchr() warnings Jeff King
2026-03-31 23:41 ` [PATCH 02/12] http: " Jeff King
2026-03-31 23:41 ` [PATCH 03/12] transport-helper: drop " Jeff King
2026-04-01 13:46 ` Patrick Steinhardt
2026-03-31 23:42 ` [PATCH 04/12] pager: explicitly cast away strchr() constness Jeff King
2026-04-01 20:50 ` Junio C Hamano
2026-04-02 3:54 ` Jeff King
2026-03-31 23:42 ` [PATCH 05/12] run-command: explicitly cast away constness when assigning to void Jeff King
2026-03-31 23:44 ` [PATCH 06/12] find_last_dir_sep(): convert inline function to macro Jeff King
2026-03-31 23:46 ` [PATCH 07/12] pseudo-merge: fix disk reads from find_pseudo_merge() Jeff King
2026-03-31 23:56 ` Jeff King
2026-04-01 21:40 ` Junio C Hamano
2026-04-02 23:51 ` Taylor Blau
2026-03-31 23:50 ` [PATCH 08/12] skip_prefix(): check const match between in and out params Jeff King
2026-04-01 13:17 ` Phillip Wood
2026-04-01 14:04 ` Phillip Wood
2026-04-01 19:24 ` Jeff King
2026-04-01 22:13 ` Junio C Hamano
2026-04-02 15:05 ` Phillip Wood
2026-04-01 13:46 ` Patrick Steinhardt
2026-03-31 23:51 ` [PATCH 09/12] pkt-line: make packet_reader.line non-const Jeff King
2026-04-01 22:18 ` Junio C Hamano
2026-04-02 3:55 ` Jeff King
2026-03-31 23:52 ` [PATCH 10/12] range-diff: drop const to fix strstr() warnings Jeff King
2026-03-31 23:52 ` [PATCH 11/12] http: drop const to fix strstr() warning Jeff King
2026-03-31 23:53 ` [PATCH 12/12] refs/files-backend: drop const to fix strchr() warning Jeff King
2026-04-01 13:46 ` Patrick Steinhardt
2026-04-01 22:22 ` Junio C Hamano [this message]
2026-04-02 3:56 ` Jeff King
2026-04-02 4:14 ` [PATCH v2 0/12] fixing the remainder of the C23 strchr warnings Jeff King
2026-04-02 4:14 ` [PATCH v2 01/12] convert: add const to fix strchr() warnings Jeff King
2026-04-02 4:14 ` [PATCH v2 02/12] http: " Jeff King
2026-04-02 4:14 ` [PATCH v2 03/12] transport-helper: drop " Jeff King
2026-04-02 4:14 ` [PATCH v2 04/12] pager: explicitly cast away strchr() constness Jeff King
2026-04-02 4:15 ` [PATCH v2 05/12] run-command: explicitly cast away constness when assigning to void Jeff King
2026-04-02 4:15 ` [PATCH v2 06/12] find_last_dir_sep(): convert inline function to macro Jeff King
2026-04-02 4:15 ` [PATCH v2 07/12] pseudo-merge: fix disk reads from find_pseudo_merge() Jeff King
2026-04-02 4:15 ` [PATCH v2 08/12] skip_prefix(): check const match between in and out params Jeff King
2026-04-02 5:11 ` Junio C Hamano
2026-04-02 6:01 ` Jeff King
2026-04-02 15:50 ` Junio C Hamano
2026-04-02 15:41 ` Junio C Hamano
2026-04-03 11:13 ` Toon Claes
2026-04-04 5:42 ` [PATCH v2 13/12] git-compat-util: fix CONST_OUTPARAM typo and indentation Jeff King
2026-04-02 4:15 ` [PATCH v2 09/12] pkt-line: make packet_reader.line non-const Jeff King
2026-04-02 4:15 ` [PATCH v2 10/12] range-diff: drop const to fix strstr() warnings Jeff King
2026-04-02 4:15 ` [PATCH v2 11/12] http: drop const to fix strstr() warning Jeff King
2026-04-02 4:15 ` [PATCH v2 12/12] refs/files-backend: drop const to fix strchr() warning Jeff King
2026-04-03 11:14 ` [PATCH v2 0/12] fixing the remainder of the C23 strchr warnings Toon Claes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqzf3mtj5z.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=collin.funk1@gmail.com \
--cc=git@grubix.eu \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=ps@pks.im \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.