Fix string buffer COW handling, part 2.

Reported by XmiliaH.
master
Mike Pall 2022-03-07 15:46:51 +01:00
parent f004a51b3a
commit aa0550e3f0
1 changed files with 3 additions and 1 deletions

View File

@ -76,6 +76,8 @@ LJLIB_CF(buffer_method_skip) LJLIB_REC(.)
MSize len = sbufxlen(sbx);
if (n < len) {
sbx->r += n;
} else if (sbufiscow(sbx)) {
sbx->r = sbx->w;
} else {
sbx->r = sbx->w = sbx->b;
}
@ -173,7 +175,7 @@ LJLIB_CF(buffer_method_get) LJLIB_REC(.)
setstrV(L, o, lj_str_new(L, sbx->r, n));
sbx->r += n;
}
if (sbx->r == sbx->w) sbx->r = sbx->w = sbx->b;
if (sbx->r == sbx->w && !sbufiscow(sbx)) sbx->r = sbx->w = sbx->b;
lj_gc_check(L);
return narg-1;
}