aboutsummaryrefslogtreecommitdiff
path: root/ref-filter.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-05-07 12:47:39 +0900
committerJunio C Hamano <gitster@pobox.com>2021-05-07 12:47:39 +0900
commitc108c8c2f2ff00b1b545ddb638bdfc40319dfa34 (patch)
tree89e56bf7f83794a8e172998e8ea34929c6993a69 /ref-filter.c
parentbb2feec17f49e93e0b983c5d895b2bf590ff92f3 (diff)
parent844c3f0b0b5cc45f8aa8bd65c7ad407df7301c39 (diff)
downloadgit-c108c8c2f2ff00b1b545ddb638bdfc40319dfa34.tar.xz
Merge branch 'zh/format-ref-array-optim'
"git (branch|tag) --format=..." has been micro-optimized. * zh/format-ref-array-optim: ref-filter: reuse output buffer ref-filter: get rid of show_ref_array_item
Diffstat (limited to 'ref-filter.c')
-rw-r--r--ref-filter.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/ref-filter.c b/ref-filter.c
index a0adb4551d..e2eac50d95 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -2435,27 +2435,22 @@ int format_ref_array_item(struct ref_array_item *info,
return 0;
}
-void show_ref_array_item(struct ref_array_item *info,
- const struct ref_format *format)
-{
- struct strbuf final_buf = STRBUF_INIT;
- struct strbuf error_buf = STRBUF_INIT;
-
- if (format_ref_array_item(info, format, &final_buf, &error_buf))
- die("%s", error_buf.buf);
- fwrite(final_buf.buf, 1, final_buf.len, stdout);
- strbuf_release(&error_buf);
- strbuf_release(&final_buf);
- putchar('\n');
-}
-
void pretty_print_ref(const char *name, const struct object_id *oid,
const struct ref_format *format)
{
struct ref_array_item *ref_item;
+ struct strbuf output = STRBUF_INIT;
+ struct strbuf err = STRBUF_INIT;
+
ref_item = new_ref_array_item(name, oid);
ref_item->kind = ref_kind_from_refname(name);
- show_ref_array_item(ref_item, format);
+ if (format_ref_array_item(ref_item, format, &output, &err))
+ die("%s", err.buf);
+ fwrite(output.buf, 1, output.len, stdout);
+ putchar('\n');
+
+ strbuf_release(&err);
+ strbuf_release(&output);
free_array_item(ref_item);
}