diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2018-04-24 15:11:48 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2018-05-02 11:16:33 +0200 |
commit | effc6a80922f9d0ed976e98f36e57073fd1f77cc (patch) | |
tree | 267752387989d3d9d83999c1c582dc0fe5217cdc /source | |
parent | 4ad2a93470e859159fe8507fb6c3e2ef7995aa9b (diff) | |
download | mupdf-effc6a80922f9d0ed976e98f36e57073fd1f77cc.tar.xz |
Improve error handling in murun shell and update MuJS submodule.
Diffstat (limited to 'source')
-rw-r--r-- | source/tools/murun.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/source/tools/murun.c b/source/tools/murun.c index d9b5412e..6b2df126 100644 --- a/source/tools/murun.c +++ b/source/tools/murun.c @@ -38,18 +38,18 @@ static void *alloc(void *actx, void *ptr, int n) static int eval_print(js_State *J, const char *source) { if (js_ploadstring(J, "[string]", source)) { - fprintf(stderr, "%s\n", js_tostring(J, -1)); + fprintf(stderr, "%s\n", js_trystring(J, -1, "Error")); js_pop(J, 1); return 1; } js_pushglobal(J); if (js_pcall(J, 0)) { - fprintf(stderr, "%s\n", js_tostring(J, -1)); + fprintf(stderr, "%s\n", js_trystring(J, -1, "Error")); js_pop(J, 1); return 1; } if (js_isdefined(J, -1)) - printf("%s\n", js_tostring(J, -1)); + printf("%s\n", js_trystring(J, -1, "can't convert to string")); js_pop(J, 1); return 0; } @@ -186,6 +186,13 @@ static const char *require_js = "require.cache = Object.create(null);\n" ; +static const char *stacktrace_js = + "Error.prototype.toString = function() {\n" + "if (this.stackTrace) return this.name + ': ' + this.message + this.stackTrace;\n" + "return this.name + ': ' + this.message;\n" + "};\n" +; + /* destructors */ static void ffi_gc_fz_buffer(js_State *J, void *buf) @@ -4454,6 +4461,7 @@ int murun_main(int argc, char **argv) js_setglobal(J, "quit"); js_dostring(J, require_js); + js_dostring(J, stacktrace_js); /* mupdf module */ |