From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: Patrick Steinhardt <ps@pks.im>,
git@vger.kernel.org, Harald Nordgren <haraldnordgren@gmail.com>
Subject: Re: [PATCH 1/4] remote: return non-const pointer from error_buf()
Date: Tue, 20 Jan 2026 12:18:07 -0800 [thread overview]
Message-ID: <xmqqbjioyr5s.fsf@gitster.g> (raw)
In-Reply-To: <20260120193857.GC3295894@coredump.intra.peff.net> (Jeff King's message of "Tue, 20 Jan 2026 14:38:57 -0500")
Jeff King <peff@peff.net> writes:
> On Mon, Jan 19, 2026 at 04:28:42PM -0800, Junio C Hamano wrote:
>
>> Patrick Steinhardt <ps@pks.im> writes:
>>
>> > This function signature is indeed quite misleading, and I'd argue that
>> > it continues to be so even after the change. I guess the intent is to
>> > make it a bit easier to print an error in functions that return a
>> > string.
>> >
>> > I'm not really a huge fan of this, but it's not a fault of this patch
>> > series, so let's read on.
>>
>> I concur. "If they do not return any useful value, they should be
>> void" was my first reaction, but presumably just like "return
>> error("message");" is a handy way to give message while signalling
>> an error to the caller, these are used to return NULL that signals
>> an error? I do not offhand think of a good longer-term direction to
>> improve this one.
>
> Yes, that's exactly the purpose. I don't see many changes that could
> let it still fulfill that purpose, though perhaps one could argue that
> it is unnecessarily confusing for the small shortening of the code it
> provides (and ditto for error() itself).
>
> There is one thing it probably could do: return a "void *" instead. That
> would make it applicable to a wider variety of functions. But it also
> makes it even more obscure (IMHO), and this is a static-local function
> that is only used for functions that return strings anyway.
>
> If we wanted to make it more generic (and I do not think we want to), we
> can see that it differs from error() in two dimensions:
>
> - error() writes to stderr, but error_buf() writes to a strbuf (or
> nowhere if the strbuf is NULL)
>
> - error() passes along integer "-1" to signal error, but error_buf()
> passes along NULL
>
> So of the four combinations, we have:
>
> - stderr / integer: error()
> - stderr / pointer: not implemented
> - strbuf / integer: not implemented
> - strbuf / pointer: error_buf()
>
> One could imagine a suite of related functions: error_int(),
> error_null(), error_buf_int(), error_buf_null() that provide all four.
>
> But I do not see us clamoring to extend the pattern further. ;)
;-). Perhaps stop being cute and doing
if (... error ...) {
format_error(err, _("error message"), ...);
return NULL;
}
without any magic might be more appropriate for a file-scope static
that is only used for a handful of times? I do not think the
situation is bad enough to warrant patch noise like this, but it is
sufficiently bad that I wish we wrote them in such a more trivial
way in the first place X-<.
next prev parent reply other threads:[~2026-01-20 20:18 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-19 5:18 [PATCH 0/4] memory leaks in remote.c Jeff King
2026-01-19 5:19 ` [PATCH 1/4] remote: return non-const pointer from error_buf() Jeff King
2026-01-19 6:33 ` Patrick Steinhardt
2026-01-20 0:28 ` Junio C Hamano
2026-01-20 19:38 ` Jeff King
2026-01-20 20:18 ` Junio C Hamano [this message]
2026-01-19 5:20 ` [PATCH 2/4] remote: drop const return of tracking_for_push_dest() Jeff King
2026-01-19 6:34 ` Patrick Steinhardt
2026-01-19 5:22 ` [PATCH 3/4] remote: fix leak in branch_get_push_1() with invalid "simple" config Jeff King
2026-01-19 6:34 ` Patrick Steinhardt
2026-01-19 5:23 ` [PATCH 4/4] remote: always allocate branch.push_tracking_ref Jeff King
2026-01-19 6:34 ` Patrick Steinhardt
2026-01-19 15:04 ` Triangular workflow Harald Nordgren
2026-01-20 19:40 ` Jeff King
2026-01-20 0:31 ` [PATCH 0/4] memory leaks in remote.c Junio C Hamano
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=xmqqbjioyr5s.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=haraldnordgren@gmail.com \
--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.