[PATCH 4/5] diff: return line_prefix directly when possible
- From
Jeff King <peff@peff.net>
- Date
- Oct 3, 2024, 21:11 UTC
- Message-ID
- <20241003211131.GD11328@coredump.intra.peff.net>
- 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