glcpp: Fix two (or more) successive applications of token pasting
authorCarl Worth <cworth@cworth.org>
Thu, 29 Sep 2011 23:51:08 +0000 (16:51 -0700)
committerCarl Worth <cworth@cworth.org>
Fri, 30 Sep 2011 18:43:59 +0000 (11:43 -0700)
There was already a loop here to look for multiple token pastes, but
it was mistakenly incrementing the iterator counter after performing
one paste.

Instead, leave the loop iterator in place to coalesce as many tokens
as necessary into one.

This fixes the recently add 096-paste-twice test as well as the
following piglit test:

spec/glsl-1.30/preprocessor/concat/concat-03.frag

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Signed-off-by: Carl Worth <cworth@cworth.org>
src/glsl/glcpp/glcpp-parse.y

index 940830416c0ad32bd9d5596123c468996aca8176..d547ecf6ff38e10f1fd44ca890cc107c2434321b 100644 (file)
@@ -1418,8 +1418,6 @@ _glcpp_parser_expand_function (glcpp_parser_t *parser,
                node->next = next_non_space->next;
                if (next_non_space == substituted->tail)
                        substituted->tail = node;
-
-               node = node->next;
        }
 
        substituted->non_space_tail = substituted->tail;