diff options
author | Mike Pall <mike> | 2022-03-07 09:42:59 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2022-03-07 09:42:59 +0100 |
commit | c4adf49204d0263b098d7a7fba7209aec4e77247 (patch) | |
tree | 5fd66d8ab448a92b55b18a1c44d72e4935cb2c9a /src/lj_buf.c | |
parent | 1d7b5029c5ba36870d25c67524034d452b761d27 (diff) | |
download | luajit-c4adf49204d0263b098d7a7fba7209aec4e77247.tar.gz luajit-c4adf49204d0263b098d7a7fba7209aec4e77247.tar.bz2 luajit-c4adf49204d0263b098d7a7fba7209aec4e77247.zip |
Fix string buffer COW handling.
Reported by XmiliaH.
Diffstat (limited to 'src/lj_buf.c')
-rw-r--r-- | src/lj_buf.c | 2 |
1 files changed, 1 insertions, 1 deletions
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) | |||
66 | lj_err_mem(sbufL(sbx)); | 66 | lj_err_mem(sbufL(sbx)); |
67 | if (len + sz > sbufsz(sbx)) { /* Must grow. */ | 67 | if (len + sz > sbufsz(sbx)) { /* Must grow. */ |
68 | buf_grow((SBuf *)sbx, len + sz); | 68 | buf_grow((SBuf *)sbx, len + sz); |
69 | } else if (sbufxslack(sbx) < (sbufsz(sbx) >> 3)) { | 69 | } else if (sbufiscow(sb) || sbufxslack(sbx) < (sbufsz(sbx) >> 3)) { |
70 | /* Also grow to avoid excessive compactions, if slack < size/8. */ | 70 | /* Also grow to avoid excessive compactions, if slack < size/8. */ |
71 | buf_grow((SBuf *)sbx, sbuflen(sbx) + sz); /* Not sbufxlen! */ | 71 | buf_grow((SBuf *)sbx, sbuflen(sbx) + sz); /* Not sbufxlen! */ |
72 | return sbx->w; | 72 | return sbx->w; |