From c4adf49204d0263b098d7a7fba7209aec4e77247 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Mon, 7 Mar 2022 09:42:59 +0100 Subject: [PATCH] Fix string buffer COW handling. Reported by XmiliaH. --- src/lj_buf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lj_buf.c b/src/lj_buf.c index 5a03ea6a..cf268af2 100644 --- a/src/lj_buf.c +++ b/src/lj_buf.c @@ -66,7 +66,7 @@ LJ_NOINLINE char *LJ_FASTCALL lj_buf_more2(SBuf *sb, MSize sz) lj_err_mem(sbufL(sbx)); if (len + sz > sbufsz(sbx)) { /* Must grow. */ buf_grow((SBuf *)sbx, len + sz); - } else if (sbufxslack(sbx) < (sbufsz(sbx) >> 3)) { + } else if (sbufiscow(sb) || sbufxslack(sbx) < (sbufsz(sbx) >> 3)) { /* Also grow to avoid excessive compactions, if slack < size/8. */ buf_grow((SBuf *)sbx, sbuflen(sbx) + sz); /* Not sbufxlen! */ return sbx->w;