From 7bfb3b5b56e30b157cfb750657de104055fe6da3 Mon Sep 17 00:00:00 2001 From: Simon Lipp Date: Sun, 14 Feb 2010 16:23:31 +0100 Subject: eval_js: print file where the error occured --- src/uzbl-core.c | 30 ++++++++++++++++++++++-------- src/uzbl-core.h | 2 +- 2 files changed, 23 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/uzbl-core.c b/src/uzbl-core.c index 2b47380..ebd8ef8 100644 --- a/src/uzbl-core.c +++ b/src/uzbl-core.c @@ -321,7 +321,7 @@ expand(const char *s, guint recurse) { /* JS from string */ else { mycmd = expand(ret, 2); - eval_js(uzbl.gui.web_view, mycmd, js_ret); + eval_js(uzbl.gui.web_view, mycmd, js_ret, "(command)"); g_free(mycmd); } @@ -1047,11 +1047,11 @@ js_init() { void -eval_js(WebKitWebView * web_view, gchar *script, GString *result) { +eval_js(WebKitWebView * web_view, gchar *script, GString *result, const char *file) { WebKitWebFrame *frame; JSGlobalContextRef context; JSObjectRef globalobject; - + JSStringRef js_file; JSStringRef js_script; JSValueRef js_result; JSValueRef js_exc = NULL; @@ -1066,7 +1066,8 @@ eval_js(WebKitWebView * web_view, gchar *script, GString *result) { /* evaluate the script and get return value*/ js_script = JSStringCreateWithUTF8CString(script); - js_result = JSEvaluateScript(context, js_script, globalobject, NULL, 0, &js_exc); + js_file = JSStringCreateWithUTF8CString(file); + js_result = JSEvaluateScript(context, js_script, globalobject, js_file, 0, &js_exc); if (js_result && !JSValueIsUndefined(context, js_result)) { js_result_string = JSValueToStringCopy(context, js_result, NULL); js_result_size = JSStringGetMaximumUTF8CStringSize(js_result_string); @@ -1086,6 +1087,18 @@ eval_js(WebKitWebView * web_view, gchar *script, GString *result) { printf("Exception occured while executing script:\n"); + /* Print file */ + prop = JSStringCreateWithUTF8CString("sourceURL"); + val = JSValueToStringCopy(context, JSObjectGetProperty(context, exc, prop, NULL), NULL); + size = JSStringGetMaximumUTF8CStringSize(val); + if(size) { + char cstr[size]; + JSStringGetUTF8CString(val, cstr, size); + printf("At %s", cstr); + } + JSStringRelease(prop); + JSStringRelease(val); + /* Print line */ prop = JSStringCreateWithUTF8CString("line"); val = JSValueToStringCopy(context, JSObjectGetProperty(context, exc, prop, NULL), NULL); @@ -1093,7 +1106,7 @@ eval_js(WebKitWebView * web_view, gchar *script, GString *result) { if(size) { char cstr[size]; JSStringGetUTF8CString(val, cstr, size); - printf("At line %s: ", cstr); + printf(":%s: ", cstr); } JSStringRelease(prop); JSStringRelease(val); @@ -1111,12 +1124,13 @@ eval_js(WebKitWebView * web_view, gchar *script, GString *result) { /* cleanup */ JSStringRelease(js_script); + JSStringRelease(js_file); } void run_js (WebKitWebView * web_view, GArray *argv, GString *result) { if (argv_idx(argv, 0)) - eval_js(web_view, argv_idx(argv, 0), result); + eval_js(web_view, argv_idx(argv, 0), result, "(command)"); } void @@ -1149,7 +1163,7 @@ run_external_js (WebKitWebView * web_view, GArray *argv, GString *result) { g_free (js); js = newjs; - eval_js (web_view, js, result); + eval_js (web_view, js, result, path); g_free (js); g_array_free (lines, TRUE); g_free(path); @@ -2551,7 +2565,7 @@ load_uri_imp(gchar *uri) { } if (g_strstr_len (uri, 11, "javascript:") != NULL) { - eval_js(uzbl.gui.web_view, uri, NULL); + eval_js(uzbl.gui.web_view, uri, NULL, "javascript:"); return; } newuri = g_string_new (uri); diff --git a/src/uzbl-core.h b/src/uzbl-core.h index e05fcdb..23072e4 100644 --- a/src/uzbl-core.h +++ b/src/uzbl-core.h @@ -390,7 +390,7 @@ void run_external_js (WebKitWebView * web_view, GArray *argv, GString *result); void -eval_js(WebKitWebView * web_view, gchar *script, GString *result); +eval_js(WebKitWebView * web_view, gchar *script, GString *result, const gchar *script_file); void handle_authentication (SoupSession *session, -- cgit v1.2.3