[PATCH v2 5/5] notes: use strbuf_attach to take ownership of the object contents
From: Maarten Bosmans <mkbosmans@gmail.com>
From: Maarten Bosmans <maarten.bosmans@vortech.nl>
Avoid an extra allocation in the strbuf when pushing the string into it.
Signed-off-by: Maarten Bosmans <maarten.bosmans@vortech.nl>
---
builtin/notes.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/builtin/notes.c b/builtin/notes.c
index 6863935d03..5be24a9c58 100644
--- a/builtin/notes.c
+++ b/builtin/notes.c
@@ -314,10 +314,8 @@ static int parse_reuse_arg(const struct option *opt, const char *arg, int unset)
if (type != OBJ_BLOB)
die(_("cannot read note data from non-blob object '%s'."), arg);
- strbuf_add(&msg->buf, value, len);
- free(value);
+ strbuf_attach(&msg->buf, value, len, len + 1);
- msg->buf.len = len;
ALLOC_GROW_BY(d->messages, d->msg_nr, 1, d->msg_alloc);
d->messages[d->msg_nr - 1] = msg;
msg->stripspace = NO_STRIPSPACE;
@@ -705,12 +703,11 @@ static int append_edit(int argc, const char **argv, const char *prefix)
if (!prev_buf)
die(_("unable to read %s"), oid_to_hex(note));
if (size)
- strbuf_add(&buf, prev_buf, size);
+ strbuf_attach(&buf, prev_buf, size, size + 1);
if (d.buf.len && size)
append_separator(&buf);
strbuf_insert(&d.buf, 0, buf.buf, buf.len);
- free(prev_buf);
strbuf_release(&buf);
}
--
2.35.3