git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Derrick Stolee <stolee@gmail.com>
Cc: git@vger.kernel.org, gitster@pobox.com, ps@pks.im
Subject: [PATCH 4/5] diff: return line_prefix directly when possible
Date: Thu, 3 Oct 2024 17:11:31 -0400	[thread overview]
Message-ID: <20241003211131.GD11328@coredump.intra.peff.net> (raw)
In-Reply-To: <20241003210548.GB11180@coredump.intra.peff.net>

We may point our output_prefix callback to diff_output_prefix_callback()
in any of these cases:

  1. we have a user-provided line_prefix

  2. we have a graph prefix to show

  3. both (1) and (2)

The function combines the available elements into a strbuf and returns
its pointer.

In the case that we just have the line_prefix, though, there is no need
for the strbuf. We can return the string directly.

This is a minor optimization by itself, but also will allow us to clean
up some memory ownership issues on top.

Signed-off-by: Jeff King <peff@peff.net>
---
The old code did handle a case "0" where neither is set. But in that
case we would never set up the callback in the first place. So I didn't
think it was worth being defensive there.

 graph.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/graph.c b/graph.c
index c046f6285d..0d200ca77f 100644
--- a/graph.c
+++ b/graph.c
@@ -318,6 +318,9 @@ static const char *diff_output_prefix_callback(struct diff_options *opt, void *d
 
 	assert(opt);
 
+	if (!graph)
+		return opt->line_prefix;
+
 	strbuf_reset(&msgbuf);
 	if (opt->line_prefix)
 		strbuf_addstr(&msgbuf, opt->line_prefix);
-- 
2.47.0.rc1.384.g9f398d04fd


  parent reply	other threads:[~2024-10-03 21:11 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-02 16:07 [PATCH] line-log: protect inner strbuf from free Derrick Stolee via GitGitGadget
2024-10-02 23:56 ` Jeff King
2024-10-03  0:19   ` Jeff King
2024-10-03  2:36   ` Derrick Stolee
2024-10-03  6:11     ` Jeff King
2024-10-03 12:23       ` Derrick Stolee
2024-10-03 21:02         ` Jeff King
2024-10-03 11:58 ` [PATCH v2 0/3] " Derrick Stolee via GitGitGadget
2024-10-03 11:58   ` [PATCH v2 1/3] " Derrick Stolee via GitGitGadget
2024-10-04  4:32     ` Patrick Steinhardt
2024-10-03 11:58   ` [PATCH v2 2/3] line-log: remove output_prefix() Jeff King via GitGitGadget
2024-10-03 11:58   ` [PATCH v2 3/3] diff: modify output_prefix function pointer Jeff King via GitGitGadget
2024-10-03 16:26     ` Junio C Hamano
2024-10-03 21:05   ` [PATCH 0/5] diff output_prefix cleanups Jeff King
2024-10-03 21:06     ` [PATCH 1/5] line-log: use diff_line_prefix() instead of custom helper Jeff King
2024-10-03 21:06     ` [PATCH 2/5] diff: drop line_prefix_length field Jeff King
2024-10-03 21:09     ` [PATCH 3/5] diff: return const char from output_prefix callback Jeff King
2024-10-03 21:11     ` Jeff King [this message]
2024-10-03 21:13     ` [PATCH 5/5] diff: store graph prefix buf in git_graph struct Jeff King
2024-10-03 23:43       ` Junio C Hamano
2024-10-04  4:32         ` Patrick Steinhardt
2024-10-04 19:27     ` [PATCH 0/5] diff output_prefix cleanups Derrick Stolee
2024-10-04 19:31       ` Junio C Hamano
2024-10-04 19:33     ` Derrick Stolee

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=20241003211131.GD11328@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=ps@pks.im \
    --cc=stolee@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).