shortlog: make trailer insertion a noop when appropriate

When there are no trailers to insert, it is natural that insert_records_from_trailers() should return without having done any work. But instead we guard this call unnecessarily by first checking whether `log->groups` has the `SHORTLOG_GROUP_TRAILER` bit set. Prepare to match a similar pattern in the future where a function which inserts records of a certain type does no work when no specifiers matching that type are given. Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Taylor Blau committed Oct 24, 2022 at 14:55 UTC 0b293df9642bc8731e45e636ef8f1c0c5749d4b2
1 file changed +4 -3
builtin/shortlog.c
+4 -3
@@ -170,6 +170,9 @@ static void insert_records_from_trailers(struct shortlog *log,
170 const char *commit_buffer, *body;
171 struct strbuf ident = STRBUF_INIT;
172
173 + if (!log->trailers.nr)
174 + return;
175 +
176 /*
177 * Using format_commit_message("%B") would be simpler here, but
178 * this saves us copying the message.
@@ -240,9 +243,7 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit)
243 strset_add(&dups, ident.buf))
244 insert_one_record(log, ident.buf, oneline_str);
245 }
243 - if (log->groups & SHORTLOG_GROUP_TRAILER) {
244 - insert_records_from_trailers(log, &dups, commit, &ctx, oneline_str);
245 - }
246 + insert_records_from_trailers(log, &dups, commit, &ctx, oneline_str);
247
248 strset_clear(&dups);
249 strbuf_release(&ident);