From: Jeff King Date: Thu, 20 Aug 2015 14:46:04 +0000 (-0400) Subject: format_config: don't init strbuf X-Git-Tag: v2.6.0-rc0~25^2~2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/9f1429df179adb7a315616d01c9b237b521a3733 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 Signed-off-by: Junio C Hamano --- diff --git a/builtin/config.c b/builtin/config.c index 810e104224..91aa56feed 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -108,8 +108,6 @@ struct strbuf_list { static int format_config(struct strbuf *buf, const char *key_, const char *value_) { - strbuf_init(buf, 0); - if (show_keys) strbuf_addstr(buf, key_); if (!omit_values) { @@ -166,6 +164,7 @@ static int collect_config(const char *key_, const char *value_, void *cb) return 0; ALLOC_GROW(values->items, values->nr + 1, values->alloc); + strbuf_init(&values->items[values->nr], 0); return format_config(&values->items[values->nr++], key_, value_); }