summaryrefslogtreecommitdiff
path: root/src/liolib.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/liolib.js')
-rw-r--r--src/liolib.js7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/liolib.js b/src/liolib.js
index bd78f87..92dda58 100644
--- a/src/liolib.js
+++ b/src/liolib.js
@@ -130,6 +130,11 @@ const io_output = function(L) {
return g_iofile(L, IO_OUTPUT, "w");
};
+/* node <= 6 doesn't support passing a Uint8Array to fs.writeSync */
+const prepare_string_for_write = process.versions.node > 6 ?
+ (s) => s : // identity function
+ (s) => Buffer.from(s.buffer, s.byteOffset, s.byteLength);
+
const g_write = function(L, f, arg) {
let nargs = lua_gettop(L) - arg;
let status = true;
@@ -137,7 +142,7 @@ const g_write = function(L, f, arg) {
for (; nargs--; arg++) {
let s = luaL_checklstring(L, arg);
try {
- status = status && (fs.writeSync(f.fd, Uint8Array.from(s)) === s.length);
+ status = status && (fs.writeSync(f.fd, prepare_string_for_write(s), 0, s.length) === s.length);
} catch (e) {
status = false;
err = e;