summaryrefslogtreecommitdiff
path: root/content/handlers/javascript
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2019-08-02 14:55:34 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2019-08-02 14:55:34 +0100
commit09cce349da9cad23e5475e3974dab50b7a947201 (patch)
tree90f8640ae06f8e7e2c313eabd59780f98e2c91ec /content/handlers/javascript
parentc9384d65f6fb5d6c661f9f65c4b60956e7d4bc1a (diff)
downloadnetsurf-09cce349da9cad23e5475e3974dab50b7a947201.tar.gz
netsurf-09cce349da9cad23e5475e3974dab50b7a947201.tar.bz2
dukky: Clean up our stacktrace reporting
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'content/handlers/javascript')
-rw-r--r--content/handlers/javascript/duktape/dukky.c37
1 files changed, 6 insertions, 31 deletions
diff --git a/content/handlers/javascript/duktape/dukky.c b/content/handlers/javascript/duktape/dukky.c
index 4dc97aac6..e7ffb0f2c 100644
--- a/content/handlers/javascript/duktape/dukky.c
+++ b/content/handlers/javascript/duktape/dukky.c
@@ -759,37 +759,12 @@ static duk_ret_t dukky_safe_get(duk_context *ctx, void *udata)
static void dukky_dump_error(duk_context *ctx)
{
/* stack is ..., errobj */
- duk_idx_t stacktop = duk_get_top(ctx);
- if (!duk_is_error(ctx, -1)) {
- NSLOG(jserrors, WARNING, "Uncaught non-Error derived error in JS: %s", duk_safe_to_string(ctx, -1));
- } else {
-#define GETTER(what) \
- if (duk_has_prop_string(ctx, stacktop - 1, what)) { \
- NSLOG(dukky, DEEPDEBUG, "Fetching " what); \
- duk_dup(ctx, stacktop - 1); \
- if (duk_safe_call(ctx, dukky_safe_get, (void *)what, 1, 1) != DUK_EXEC_SUCCESS) { \
- NSLOG(dukky, DEBUG, "Error fetching " what ": %s", duk_safe_to_string(ctx, -1)); \
- } else { \
- NSLOG(dukky, DEEPDEBUG, "Success fetching " what); \
- } \
- } else { \
- NSLOG(dukky, DEBUG, "Faking " what); \
- duk_push_string(ctx, "?" what "?"); \
- }
- GETTER("name");
- GETTER("message");
- GETTER("fileName");
- GETTER("lineNumber");
- GETTER("stack");
- NSLOG(jserrors, DEBUG, "Uncaught error in JS: %s: %s",
- duk_safe_to_string(ctx, -5), duk_safe_to_string(ctx, -4));
- NSLOG(jserrors, DEBUG, " was at: %s line %s",
- duk_safe_to_string(ctx, -3), duk_safe_to_string(ctx, -2));
- NSLOG(jserrors, DEBUG, " Stack trace: %s",
- duk_safe_to_string(ctx, -1));
-#undef GETTER
- }
- duk_set_top(ctx, stacktop);
+ duk_dup_top(ctx);
+ /* ..., errobj, errobj */
+ NSLOG(jserrors, WARNING, "Uncaught error in JS: %s", duk_safe_to_stacktrace(ctx, -1));
+ /* ..., errobj, errobj.stackstring */
+ duk_pop(ctx);
+ /* ..., errobj */
}
duk_int_t dukky_pcall(duk_context *ctx, duk_size_t argc, bool reset_timeout)