aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVaidas Pilkauskas <vaidas.pilkauskas@shopify.com>2026-03-17 13:00:33 +0000
committerJunio C Hamano <gitster@pobox.com>2026-03-17 09:14:19 -0700
commitbc6a6cf5eedb19b1b1da92ed2761ff9b1c7da627 (patch)
treeee36b0ddfd8d48f295ce4c83b02387be63c11d16
parent67ad42147a7acc2af6074753ebd03d904476118f (diff)
downloadgit-bc6a6cf5eedb19b1b1da92ed2761ff9b1c7da627.tar.xz
strbuf: pass correct alloc to strbuf_attach() in strbuf_reencode()
reencode_string_len() allocates len+1 bytes (including the NUL) and returns the string length in len. strbuf_reencode() was calling strbuf_attach(sb, out, len, len), so alloc was one byte too small. strbuf_attach() then calls strbuf_grow(sb, 0). With alloc < len+1, ALLOC_GROW always reallocates, so we reallocated immediately after attach even when the strbuf was not extended further. Pass len+1 as the alloc argument so the existing buffer is reused and the reallocation is avoided. Signed-off-by: Vaidas Pilkauskas <vaidas.pilkauskas@shopify.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--strbuf.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/strbuf.c b/strbuf.c
index 59678bf5b0..bad76ea64d 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -168,7 +168,7 @@ int strbuf_reencode(struct strbuf *sb, const char *from, const char *to)
if (!out)
return -1;
- strbuf_attach(sb, out, len, len);
+ strbuf_attach(sb, out, len, len + 1);
return 0;
}