From 64c3da71fbef546b962e5fdb4ee1ff95e224db3d Mon Sep 17 00:00:00 2001 From: Daniel Carl Date: Mon, 11 Mar 2013 20:14:06 +0100 Subject: [PATCH] Removed additional error string for vp_eval_script. Return the boolean status to indicate if an error occurred and put the error also into given value pointer. This makes the api easier to call and we don't need to concern about which given string have to be freed. --- src/hints.c | 22 +++++++--------------- src/main.c | 20 +++++++++----------- src/main.h | 2 +- 3 files changed, 17 insertions(+), 27 deletions(-) diff --git a/src/hints.c b/src/hints.c index 82fc2ad..ff6c799 100644 --- a/src/hints.c +++ b/src/hints.c @@ -38,10 +38,8 @@ static gboolean hints_keypress_callback(WebKitWebView* webview, GdkEventKey* eve void hints_init(WebKitWebFrame* frame) { char* value = NULL; - char* error = NULL; - vp_eval_script(frame, HINTS_JS, HINT_FILE, &value, &error); + vp_eval_script(frame, HINTS_JS, HINT_FILE, &value); g_free(value); - g_free(error); } void hints_clear(Client* c) @@ -50,13 +48,8 @@ void hints_clear(Client* c) if (CLEAN_MODE(c->state.mode) == VP_MODE_HINTING) { char* js = g_strdup_printf("%s.clear();", HINT_VAR); char* value = NULL; - char* error = NULL; - - vp_eval_script( - webkit_web_view_get_main_frame(c->gui.webview), js, HINT_FILE, &value, &error - ); + vp_eval_script(webkit_web_view_get_main_frame(c->gui.webview), js, HINT_FILE, &value); g_free(value); - g_free(error); g_free(js); g_signal_emit_by_name(c->gui.webview, "hovering-over-link", NULL, NULL); @@ -120,15 +113,14 @@ void hints_focus_next(Client* c, const gboolean back) static void hints_run_script(Client* c, char* js) { char* value = NULL; - char* error = NULL; int mode = c->hints.mode; - vp_eval_script( - webkit_web_view_get_main_frame(c->gui.webview), js, HINT_FILE, &value, &error + gboolean success = vp_eval_script( + webkit_web_view_get_main_frame(c->gui.webview), js, HINT_FILE, &value ); - if (error) { - fprintf(stderr, "%s\n", error); - g_free(error); + if (!success) { + fprintf(stderr, "%s\n", value); + g_free(value); vp_set_mode(c, VP_MODE_NORMAL, FALSE); diff --git a/src/main.c b/src/main.c index 3cf9a89..99115fc 100644 --- a/src/main.c +++ b/src/main.c @@ -110,7 +110,7 @@ void vp_echo(Client* c, const MessageType type, gboolean hide, const char *error } } -void vp_eval_script(WebKitWebFrame* frame, char* script, char* file, char** value, char** error) +gboolean vp_eval_script(WebKitWebFrame* frame, char* script, char* file, char** value) { JSStringRef str, file_name; JSValueRef exception = NULL, result = NULL; @@ -126,9 +126,11 @@ void vp_eval_script(WebKitWebFrame* frame, char* script, char* file, char** valu if (result) { *value = vp_jsref_to_string(js, result); - } else { - *error = vp_jsref_to_string(js, exception); + return TRUE; } + + *value = vp_jsref_to_string(js, exception); + return FALSE; } gboolean vp_load_uri(Client* c, const Arg* arg) @@ -626,15 +628,11 @@ static void vp_run_user_script(WebKitWebFrame* frame) && g_file_get_contents(core.files[FILES_SCRIPT], &js, NULL, &error) ) { char* value = NULL; - char* error = NULL; - - vp_eval_script(frame, js, core.files[FILES_SCRIPT], &value, &error); - if (error) { - fprintf(stderr, "%s", error); - g_free(error); - } else { - g_free(value); + gboolean success = vp_eval_script(frame, js, core.files[FILES_SCRIPT], &value); + if (!success) { + fprintf(stderr, "%s", value); } + g_free(value); g_free(js); } } diff --git a/src/main.h b/src/main.h index bca66d4..d6475e7 100644 --- a/src/main.h +++ b/src/main.h @@ -333,7 +333,7 @@ extern VpCore core; /* functions */ void vp_clean_input(Client* c); void vp_echo(Client* c, const MessageType type, gboolean hide, const char *error, ...); -void vp_eval_script(WebKitWebFrame* frame, char* script, char* file, char** value, char** error); +gboolean vp_eval_script(WebKitWebFrame* frame, char* script, char* file, char** value); gboolean vp_load_uri(Client* c, const Arg* arg); gboolean vp_set_clipboard(const Arg* arg); gboolean vp_set_mode(Client* c, Mode mode, gboolean clean); -- 2.20.1