From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Patrick Steinhardt <ps@pks.im>,
Collin Funk <collin.funk1@gmail.com>,
Michael J Gruber <git@grubix.eu>
Subject: [PATCH v2 12/12] refs/files-backend: drop const to fix strchr() warning
Date: Thu, 2 Apr 2026 00:15:16 -0400 [thread overview]
Message-ID: <20260402041516.GL3501239@coredump.intra.peff.net> (raw)
In-Reply-To: <20260402041433.GA3501120@coredump.intra.peff.net>
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().
Signed-off-by: Jeff King <peff@peff.net>
---
hex.c | 6 +++---
hex.h | 6 ++++--
refs/files-backend.c | 2 +-
3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/hex.c b/hex.c
index 865a232167..bc756722ca 100644
--- a/hex.c
+++ b/hex.c
@@ -54,9 +54,9 @@ int get_oid_hex(const char *hex, struct object_id *oid)
return get_oid_hex_algop(hex, oid, the_hash_algo);
}
-int parse_oid_hex_algop(const char *hex, struct object_id *oid,
- const char **end,
- const struct git_hash_algo *algop)
+int parse_oid_hex_algop_impl(const char *hex, struct object_id *oid,
+ const char **end,
+ const struct git_hash_algo *algop)
{
int ret = get_oid_hex_algop(hex, oid, algop);
if (!ret)
diff --git a/hex.h b/hex.h
index e9ccb54065..1e9a65d83a 100644
--- a/hex.h
+++ b/hex.h
@@ -40,8 +40,10 @@ char *oid_to_hex(const struct object_id *oid); /* same static buffer */
* other invalid character. end is only updated on success; otherwise, it is
* unmodified.
*/
-int parse_oid_hex_algop(const char *hex, struct object_id *oid, const char **end,
- const struct git_hash_algo *algo);
+#define parse_oid_hex_algop(hex, oid, end, algo) \
+ parse_oid_hex_algop_impl((hex), (oid), CONST_OUTPARAM((hex), (end)), (algo))
+int parse_oid_hex_algop_impl(const char *hex, struct object_id *oid, const char **end,
+ const struct git_hash_algo *algo);
/*
* These functions work like get_oid_hex and parse_oid_hex, but they will parse
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 0537a72b2a..b3b0c25f84 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -2190,7 +2190,7 @@ static int show_one_reflog_ent(struct files_ref_store *refs,
char *email_end, *message;
timestamp_t timestamp;
int tz;
- const char *p = sb->buf;
+ char *p = sb->buf;
/* old SP new SP name <email> SP time TAB msg LF */
if (!sb->len || sb->buf[sb->len - 1] != '\n' ||
--
2.53.0.1172.ge9e20b5838
next prev parent reply other threads:[~2026-04-02 4:15 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
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 ` Jeff King [this message]
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=20260402041516.GL3501239@coredump.intra.peff.net \
--to=peff@peff.net \
--cc=collin.funk1@gmail.com \
--cc=git@grubix.eu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox