From 68801b7382803bac865f75fab0ceec101285ed9a Mon Sep 17 00:00:00 2001 From: Miciah Dashiel Butler Masters Date: Sun, 13 Nov 2011 04:49:06 +0000 Subject: [PATCH] elinks_object: use usrerror if there is no term Currently, elinks_alert assumes that smjs_ses is not NULL and crashes if it is. Change elinks_alert to check whether smjs_term is NULL, try get_default_terminal if so, and fall back on printing to stderr using usrerror if no terminal is found. --- src/scripting/smjs/elinks_object.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/scripting/smjs/elinks_object.c b/src/scripting/smjs/elinks_object.c index 3c51ec90e..eb2ad928d 100644 --- a/src/scripting/smjs/elinks_object.c +++ b/src/scripting/smjs/elinks_object.c @@ -76,6 +76,7 @@ elinks_alert(JSContext *ctx, uintN argc, jsval *rval) jsval val; jsval *argv = JS_ARGV(ctx, rval); unsigned char *string; + struct terminal *term; if (argc != 1) return JS_TRUE; @@ -84,8 +85,19 @@ elinks_alert(JSContext *ctx, uintN argc, jsval *rval) if (!*string) return JS_TRUE; - info_box(smjs_ses->tab->term, MSGBOX_NO_TEXT_INTL, - N_("User script alert"), ALIGN_LEFT, string); + if (smjs_ses) { + term = smjs_ses->tab->term; + } else { + term = get_default_terminal(); + } + + if (term) { + info_box(term, MSGBOX_NO_TEXT_INTL, + N_("User script alert"), ALIGN_LEFT, string); + } else { + usrerror("%s", string); + sleep(3); + } undef_to_jsval(ctx, &val); JS_SET_RVAL(ctx, rval, val);