path: root/builtin/config.c
diff options
authorJeff King <>2015-08-20 14:46:04 (GMT)
committerJunio C Hamano <>2015-08-20 20:16:50 (GMT)
commit9f1429df179adb7a315616d01c9b237b521a3733 (patch)
tree455bded9f9cf71ccb3023df97d65eeadfd4c95bc /builtin/config.c
parentebca2d49577665db0318a9c91c0bcca7e4eed963 (diff)
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 <>
Diffstat (limited to 'builtin/config.c')
1 files changed, 1 insertions, 2 deletions
diff --git a/builtin/config.c b/builtin/config.c
index 810e104..91aa56f 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_);