diff options
| author | daurnimator <quae@daurnimator.com> | 2017-09-27 22:37:57 +1000 | 
|---|---|---|
| committer | daurnimator <quae@daurnimator.com> | 2017-09-27 22:37:57 +1000 | 
| commit | 539c4d254c75165a51d4a9cfd2a05342f503516a (patch) | |
| tree | a0fb6af1ce8c315e5e119fd8d82ce4998f9c4532 /src/loadlib.js | |
| parent | 3728f550e1d8dc56b603b92debdc5f1a374a888f (diff) | |
| download | fengari-539c4d254c75165a51d4a9cfd2a05342f503516a.tar.gz fengari-539c4d254c75165a51d4a9cfd2a05342f503516a.tar.bz2 fengari-539c4d254c75165a51d4a9cfd2a05342f503516a.zip | |
src/loadlib.js: Load code with Function to catch syntax errors before evaluation
Diffstat (limited to 'src/loadlib.js')
| -rw-r--r-- | src/loadlib.js | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/src/loadlib.js b/src/loadlib.js index acdf514..da60d0b 100644 --- a/src/loadlib.js +++ b/src/loadlib.js @@ -42,7 +42,15 @@ if (WEB) {          xhr.send();          if (xhr.status >= 200 && xhr.status <= 299) { -            return eval(xhr.response); +            let func; +            try { +                func = Function(xhr.response); +            } catch (e) { +                lua.lua_pushstring(L, lua.to_luastring(`${e.name}: ${e.message}`)); +                return null; +            } +            let res = func(); +            return res;          } else {              lua.lua_pushstring(L, lua.to_luastring(`${xhr.status}: ${xhr.statusText}`));              return null; | 
