summaryrefslogtreecommitdiffstats
path: root/src/glsl/glcpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/glsl/glcpp')
-rw-r--r--src/glsl/glcpp/glcpp-parse.y10
-rw-r--r--src/glsl/glcpp/tests/069-repeated-argument.c2
2 files changed, 9 insertions, 3 deletions
diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y
index e4dcc76e0a7..5b7467836d7 100644
--- a/src/glsl/glcpp/glcpp-parse.y
+++ b/src/glsl/glcpp/glcpp-parse.y
@@ -1075,7 +1075,7 @@ _token_list_create_with_one_space (void *ctx)
*
* Returns the token list that results from the expansion and sets
* *last to the last node in the list that was consumed by the
- * expansion. Specificallty, *last will be set as follows: as the
+ * expansion. Specifically, *last will be set as follows: as the
* token of the closing right parenthesis.
*/
static token_list_t *
@@ -1147,9 +1147,13 @@ _glcpp_parser_expand_function (glcpp_parser_t *parser,
* tokens, or append a placeholder token for
* an empty argument. */
if (argument->head) {
+ token_list_t *expanded_argument;
+ expanded_argument = _token_list_copy (parser,
+ argument);
_glcpp_parser_expand_token_list (parser,
- argument);
- _token_list_append_list (substituted, argument);
+ expanded_argument);
+ _token_list_append_list (substituted,
+ expanded_argument);
} else {
token_t *new_token;
diff --git a/src/glsl/glcpp/tests/069-repeated-argument.c b/src/glsl/glcpp/tests/069-repeated-argument.c
new file mode 100644
index 00000000000..2b46ead294c
--- /dev/null
+++ b/src/glsl/glcpp/tests/069-repeated-argument.c
@@ -0,0 +1,2 @@
+#define double(x) x x
+double(1)