Merged with Irssi 0.8.6.
[silc.git] / apps / irssi / src / core / special-vars.c
index f7d69728c466d4fe41c60d02f2506d0c233cef72..6906664207a379b318849441bba558dfda383826 100644 (file)
@@ -391,7 +391,7 @@ char *parse_special(char **cmd, SERVER_REC *server, void *item,
        }
 
        nest_free = FALSE; nest_value = NULL;
-       if (**cmd == '(') {
+       if (**cmd == '(' && (*cmd)[1] != '\0') {
                /* subvariable */
                int toplevel = nested_orig_cmd == NULL;
 
@@ -407,6 +407,9 @@ char *parse_special(char **cmd, SERVER_REC *server, void *item,
                                                   flags);
                }
 
+               if (nest_value == NULL || *nest_value == '\0')
+                       return NULL;
+
                while ((*nested_orig_cmd)[1] != '\0') {
                        (*nested_orig_cmd)++;
                        if (**nested_orig_cmd == ')')
@@ -421,6 +424,8 @@ char *parse_special(char **cmd, SERVER_REC *server, void *item,
                brackets = FALSE;
        else {
                /* special value is inside {...} (foo${test}bar -> fooXXXbar) */
+               if ((*cmd)[1] == '\0')
+                       return NULL;
                (*cmd)++;
                brackets = TRUE;
        }