summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordaurnimator <quae@daurnimator.com>2017-06-09 15:25:05 +1000
committerdaurnimator <quae@daurnimator.com>2017-06-09 16:18:09 +1000
commitb01bf7ef940503e373d59c912c9952582a608a77 (patch)
tree6304d51d53f9b72940fe90d78e8100b86213e3bd
parentd47c82caf02bd21d05700c48a52d8be69db9ad7d (diff)
downloadfengari-b01bf7ef940503e373d59c912c9952582a608a77.tar.gz
fengari-b01bf7ef940503e373d59c912c9952582a608a77.tar.bz2
fengari-b01bf7ef940503e373d59c912c9952582a608a77.zip
src/lzio.js: Introduce luaZ_resetbuffer
-rw-r--r--src/llex.js15
-rw-r--r--src/lzio.js16
2 files changed, 15 insertions, 16 deletions
diff --git a/src/llex.js b/src/llex.js
index 4c2be8c..c110a7a 100644
--- a/src/llex.js
+++ b/src/llex.js
@@ -320,10 +320,7 @@ const read_long_string = function(ls, seminfo, sep) {
case char['\n']: case char['\r']: {
save(ls, char['\n']);
inclinenumber(ls);
- if (!seminfo) {
- ls.buff.n = 0;
- ls.buff.buffer = [];
- }
+ if (!seminfo) lzio.luaZ_resetbuffer(ls.buff);
break;
}
default: {
@@ -468,9 +465,7 @@ const isreserved = function(w) {
};
const llex = function(ls, seminfo) {
- ls.buff.n = 0;
- ls.buff.buffer = [];
-
+ lzio.luaZ_resetbuffer(ls.buff);
for (;;) {
assert(typeof ls.current == "number");
switch (ls.current) {
@@ -489,12 +484,10 @@ const llex = function(ls, seminfo) {
next(ls);
if (ls.current === char['[']) { /* long comment? */
let sep = skip_sep(ls);
- ls.buff.n = 0; /* 'skip_sep' may dirty the buffer */
- ls.buff.buffer = [];
+ lzio.luaZ_resetbuffer(ls.buff); /* 'skip_sep' may dirty the buffer */
if (sep >= 0) {
read_long_string(ls, null, sep); /* skip long comment */
- ls.buff.n = 0; /* previous call may dirty the buff. */
- ls.buff.buffer = [];
+ lzio.luaZ_resetbuffer(ls.buff); /* previous call may dirty the buff. */
break;
}
}
diff --git a/src/lzio.js b/src/lzio.js
index 919ed44..72969d4 100644
--- a/src/lzio.js
+++ b/src/lzio.js
@@ -10,6 +10,11 @@ class MBuffer {
}
}
+const luaZ_resetbuffer = function(buff) {
+ buff.n = 0;
+ buff.buffer = [];
+};
+
class ZIO {
constructor(L, reader, data) {
this.L = L; /* Lua state (for reader) */
@@ -74,8 +79,9 @@ const luaZ_read = function(z, b, b_offset, n) {
return 0;
};
-module.exports.EOZ = EOZ;
-module.exports.luaZ_fill = luaZ_fill;
-module.exports.luaZ_read = luaZ_read;
-module.exports.MBuffer = MBuffer;
-module.exports.ZIO = ZIO;
+module.exports.EOZ = EOZ;
+module.exports.luaZ_fill = luaZ_fill;
+module.exports.luaZ_read = luaZ_read;
+module.exports.luaZ_resetbuffer = luaZ_resetbuffer;
+module.exports.MBuffer = MBuffer;
+module.exports.ZIO = ZIO;