summaryrefslogtreecommitdiff
path: root/glcpp-parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'glcpp-parse.y')
-rw-r--r--glcpp-parse.y13
1 files changed, 11 insertions, 2 deletions
diff --git a/glcpp-parse.y b/glcpp-parse.y
index 5b792a9..ec10433 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;
}