]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Fix string buffer COW handling, part 2.
authorMike Pall <mike>
Mon, 7 Mar 2022 14:46:51 +0000 (15:46 +0100)
committerMike Pall <mike>
Mon, 7 Mar 2022 14:46:51 +0000 (15:46 +0100)
Reported by XmiliaH.

src/lib_buffer.c

index 9aa725b66a4aeeea355914ec6e032b4a6b016b00..e3d24504b9830b72ae1c7bc0a19b5925256adfa2 100644 (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;
 }