format_config: don't init strbuf

It's unusual for a function which writes to a passed-in strbuf to call strbuf_init; that will throw away anything already there, leaking memory. In this case, there are exactly two callers; one relies on this initialization and the other passes in an already-initialized buffer. There's no leak, as the initialized buffer doesn't have anything in it. But let's bump the strbuf_init out to the one caller who needs it, making format_config more idiomatic. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Aug 20, 2015 at 10:46 UTC 9f1429df179adb7a315616d01c9b237b521a3733
1 file changed +1 -2
builtin/config.c
+1 -2
@@ -108,8 +108,6 @@ struct strbuf_list {
108
109 static int format_config(struct strbuf *buf, const char *key_, const char *value_)
110 {
111 - strbuf_init(buf, 0);
112 -
111 if (show_keys)
112 strbuf_addstr(buf, key_);
113 if (!omit_values) {
@@ -166,6 +164,7 @@ static int collect_config(const char *key_, const char *value_, void *cb)
164 return 0;
165
166 ALLOC_GROW(values->items, values->nr + 1, values->alloc);
167 + strbuf_init(&values->items[values->nr], 0);
168
169 return format_config(&values->items[values->nr++], key_, value_);
170 }