diff options
author | Simon Lipp <sloonz@gmail.com> | 2009-10-18 16:17:19 +0200 |
---|---|---|
committer | Dieter Plaetinck <dieter@plaetinck.be> | 2010-01-01 16:41:30 +0100 |
commit | 72e8c59426a4a8ac3f8612c4c34848a259882290 (patch) | |
tree | 9e07a4733959d07a13784afcdf140f93b2c08549 | |
parent | 7bb5004a1d2cd5b0d7281a69e0bd15de61058044 (diff) |
print javascript errors in eval_js
-rw-r--r-- | uzbl-core.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/uzbl-core.c b/uzbl-core.c index fd8ee41..9203fd0 100644 --- a/uzbl-core.c +++ b/uzbl-core.c @@ -1050,6 +1050,7 @@ eval_js(WebKitWebView * web_view, gchar *script, GString *result) { JSStringRef js_script; JSValueRef js_result; + JSValueRef js_exc = NULL; JSStringRef js_result_string; size_t js_result_size; @@ -1067,7 +1068,7 @@ 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, NULL); + js_result = JSEvaluateScript(context, js_script, globalobject, NULL, 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); @@ -1080,6 +1081,37 @@ eval_js(WebKitWebView * web_view, gchar *script, GString *result) { JSStringRelease(js_result_string); } + else if (js_exc && JSValueIsObject(context, js_exc)) { + size_t size; + JSStringRef prop, val; + JSObjectRef exc = JSValueToObject(context, js_exc, NULL); + + printf("Exception occured while executing script:\n"); + + /* Print line */ + prop = JSStringCreateWithUTF8CString("line"); + val = JSValueToStringCopy(context, JSObjectGetProperty(context, exc, prop, NULL), NULL); + size = JSStringGetMaximumUTF8CStringSize(val); + if(size) { + char cstr[size]; + JSStringGetUTF8CString(val, cstr, size); + printf("At line %s: ", cstr); + } + JSStringRelease(prop); + JSStringRelease(val); + + /* Print message */ + prop = JSStringCreateWithUTF8CString("message"); + val = JSValueToStringCopy(context, JSObjectGetProperty(context, exc, prop, NULL), NULL); + size = JSStringGetMaximumUTF8CStringSize(val); + if(size) { + char cstr[size]; + JSStringGetUTF8CString(val, cstr, size); + printf("%s\n", cstr); + } + JSStringRelease(prop); + JSStringRelease(val); + } /* cleanup */ JSObjectDeleteProperty(context, globalobject, var_name, NULL); |