diff options
Diffstat (limited to 'uzbl-core.c')
-rw-r--r-- | uzbl-core.c | 22 |
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); } |