aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--uzbl-core.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/uzbl-core.c b/uzbl-core.c
index d14764f..f0870fc 100644
--- a/uzbl-core.c
+++ b/uzbl-core.c
@@ -2143,15 +2143,25 @@ run_handler (const gchar *act, const gchar *args) {
g_strfreev(chainparts);
} else {
- /* expand the user-specified arguments */
- gchar* expanded = expand(parts[1], 0);
- gchar **inparts = inject_handler_args(parts[0], expanded, args);
+ gchar **inparts;
+ gchar *inparts_[2];
+ if (parts[1]) {
+ /* expand the user-specified arguments */
+ gchar* expanded = expand(parts[1], 0);
+ inparts = inject_handler_args(parts[0], expanded, args);
+ g_free(expanded);
+ } else {
+ inparts_[0] = parts[0];
+ inparts_[1] = args;
+ inparts = inparts_;
+ }
parse_command(inparts[0], inparts[1], NULL);
- g_free(inparts[0]);
- g_free(inparts[1]);
- g_free(expanded);
+ if (inparts != inparts_) {
+ g_free(inparts[0]);
+ g_free(inparts[1]);
+ }
}
g_strfreev(parts);
}