aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib_buffer.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib_buffer.c b/src/lib_buffer.c
index 9aa725b6..e3d24504 100644
--- a/src/lib_buffer.c
+++ b/src/lib_buffer.c
@@ -76,6 +76,8 @@ LJLIB_CF(buffer_method_skip) LJLIB_REC(.)
76 MSize len = sbufxlen(sbx); 76 MSize len = sbufxlen(sbx);
77 if (n < len) { 77 if (n < len) {
78 sbx->r += n; 78 sbx->r += n;
79 } else if (sbufiscow(sbx)) {
80 sbx->r = sbx->w;
79 } else { 81 } else {
80 sbx->r = sbx->w = sbx->b; 82 sbx->r = sbx->w = sbx->b;
81 } 83 }
@@ -173,7 +175,7 @@ LJLIB_CF(buffer_method_get) LJLIB_REC(.)
173 setstrV(L, o, lj_str_new(L, sbx->r, n)); 175 setstrV(L, o, lj_str_new(L, sbx->r, n));
174 sbx->r += n; 176 sbx->r += n;
175 } 177 }
176 if (sbx->r == sbx->w) sbx->r = sbx->w = sbx->b; 178 if (sbx->r == sbx->w && !sbufiscow(sbx)) sbx->r = sbx->w = sbx->b;
177 lj_gc_check(L); 179 lj_gc_check(L);
178 return narg-1; 180 return narg-1;
179} 181}