Avoid swallowing initial left parenthesis from nested macro invocation.
authorCarl Worth <cworth@cworth.org>
Wed, 26 May 2010 00:45:22 +0000 (17:45 -0700)
committerCarl Worth <cworth@cworth.org>
Wed, 26 May 2010 00:45:22 +0000 (17:45 -0700)
We weren't including this left parenthesis in the argument's token
list so the nested function invocation wasn not being recognized.

With this fix, tests 21 and 22 now pass.

glcpp-parse.y

index ec96658..131102f 100644 (file)
@@ -754,9 +754,12 @@ _arguments_parse (argument_list_t *arguments, token_node_t **node_ret)
        if (node == NULL || node->token->type != '(')
                return FUNCTION_NOT_A_FUNCTION;
 
+       last = node;
+       node = node->next;
+
        argument = NULL;
 
-       for (paren_count = 0; node; last = node, node = node->next) {
+       for (paren_count = 1; node; last = node, node = node->next) {
                if (node->token->type == '(')
                {
                        paren_count++;
@@ -770,7 +773,8 @@ _arguments_parse (argument_list_t *arguments, token_node_t **node_ret)
                                break;
                        }
                }
-               else if (node->token->type == ',' &&
+
+               if (node->token->type == ',' &&
                         paren_count == 1)
                {
                        argument = NULL;