From d3092214510d1fafbf91d3277249dd5445455b03 Mon Sep 17 00:00:00 2001 From: huangzhw Date: Mon, 18 Jan 2021 08:07:56 +0800 Subject: [PATCH] sdscatfmt call sdsMakeRoomFor, asked for more space than intended instead of asking for the extra new space it wanted, it asked to grow the string by the size it already has too. i.e. a string of 1000 bytes, needing to grow by 10 bytes, would have been asking for an **additional** 1010 bytes. --- sds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sds.c b/sds.c index 1189716..23c59bc 100644 --- a/sds.c +++ b/sds.c @@ -606,7 +606,7 @@ sds sdscatfmt(sds s, char const *fmt, ...) { /* To avoid continuous reallocations, let's start with a buffer that * can hold at least two times the format string itself. It's not the * best heuristic but seems to work in practice. */ - s = sdsMakeRoomFor(s, initlen + strlen(fmt)*2); + s = sdsMakeRoomFor(s, strlen(fmt)*2); va_start(ap,fmt); f = fmt; /* Next format specifier byte to process. */ i = initlen; /* Position of the next byte to write to dest str. */