From: Carl Worth Date: Wed, 26 May 2010 15:15:49 +0000 (-0700) Subject: Prevent unexpanded macros from being expanded again in the future. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ec4ada01c01338ae1deab634cf62f24344bdbd3a;p=mesa.git Prevent unexpanded macros from being expanded again in the future. With this fix, tests 37 - 39 now pass. --- diff --git a/glcpp-parse.y b/glcpp-parse.y index 5b792a976e6..ec104330631 100644 --- a/glcpp-parse.y +++ b/glcpp-parse.y @@ -676,8 +676,17 @@ _glcpp_parser_expand_token_onto (glcpp_parser_t *parser, /* Finally, don't expand this macro if we're already actively * expanding it, (to avoid infinite recursion). */ - if (_string_list_contains (parser->active, identifier, NULL)) { - _token_list_append (result, token); + if (_string_list_contains (parser->active, identifier, NULL)) + { + /* We change the token type here from IDENTIFIER to + * OTHER to prevent any future expansion of this + * unexpanded token. */ + char *str; + token_t *new_token; + + str = xtalloc_strdup (result, token->value.str); + new_token = _token_create_str (result, OTHER, str); + _token_list_append (result, new_token); return 0; }