diff options
author | daurnimator <quae@daurnimator.com> | 2017-11-12 16:33:19 +1100 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2017-11-12 16:33:19 +1100 |
commit | 6d68023f27f14e8e72bf84de1dc81dac0dd71a80 (patch) | |
tree | 220f975504893f41962ab02995287f9b11c31398 /src/lauxlib.js | |
parent | 94a6480244bb874e802a61eb0acf6b87a3046494 (diff) | |
download | fengari-6d68023f27f14e8e72bf84de1dc81dac0dd71a80.tar.gz fengari-6d68023f27f14e8e72bf84de1dc81dac0dd71a80.tar.bz2 fengari-6d68023f27f14e8e72bf84de1dc81dac0dd71a80.zip |
src/lauxlib.js: Catch read errors on read rather than fstat-ing then hoping
Diffstat (limited to 'src/lauxlib.js')
-rw-r--r-- | src/lauxlib.js | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lauxlib.js b/src/lauxlib.js index ab8a8a0..16a509f 100644 --- a/src/lauxlib.js +++ b/src/lauxlib.js @@ -793,7 +793,13 @@ if (WEB) { getc = function(lf) { let b = new Buffer(1); - let bytes = fs.readSync(lf.f, b, 0, 1, lf.pos); + let bytes; + try { + bytes = fs.readSync(lf.f, b, 0, 1, lf.pos); + } catch(e) { + lf.err = e; + return null; + } lf.pos += bytes; return bytes > 0 ? b.readUInt8() : null; }; @@ -809,8 +815,6 @@ if (WEB) { try { let jsfilename = lua.to_jsstring(filename); lf.f = fs.openSync(jsfilename, "r"); - if (!fs.fstatSync(lf.f).isFile()) - throw new Error(`${jsfilename} is not a readable file`); } catch (e) { return errfile(L, "open", fnameindex, e); } |