aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tccpp.c2
-rw-r--r--tests/tests2/71_macro_empty_arg.c9
-rw-r--r--tests/tests2/71_macro_empty_arg.expect1
-rw-r--r--tests/tests2/Makefile4
4 files changed, 14 insertions, 2 deletions
diff --git a/tccpp.c b/tccpp.c
index 4c7cf80..bc2d4a2 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -2640,7 +2640,7 @@ static int *macro_arg_subst(Sym **nested_list, const int *macro_str, Sym *args)
tok_str_add2(&str, t1, &cval);
}
}
- } else {
+ } else if (*st != TOK_PLCHLDR) {
/* NOTE: the stream cannot be read when macro
substituing an argument */
macro_subst(&str, nested_list, st, NULL);
diff --git a/tests/tests2/71_macro_empty_arg.c b/tests/tests2/71_macro_empty_arg.c
new file mode 100644
index 0000000..f0d3511
--- /dev/null
+++ b/tests/tests2/71_macro_empty_arg.c
@@ -0,0 +1,9 @@
+#include <stdio.h>
+
+#define T(a,b,c) a b c
+
+int main(void)
+{
+ printf("%d", T(1,+,2) T(+,,) T(,2,*) T(,7,) T(,,));
+ return 0;
+}
diff --git a/tests/tests2/71_macro_empty_arg.expect b/tests/tests2/71_macro_empty_arg.expect
new file mode 100644
index 0000000..98d9bcb
--- /dev/null
+++ b/tests/tests2/71_macro_empty_arg.expect
@@ -0,0 +1 @@
+17
diff --git a/tests/tests2/Makefile b/tests/tests2/Makefile
index 8e11f2c..ec636ab 100644
--- a/tests/tests2/Makefile
+++ b/tests/tests2/Makefile
@@ -89,7 +89,9 @@ TESTS = \
67_macro_concat.test \
68_macro_param_list_err_1.test \
69_macro_param_list_err_2.test \
- 70_floating_point_literals.test
+ 70_floating_point_literals.test \
+ 71_macro_empty_arg.test \
+
# 34_array_assignment.test -- array assignment is not in C standard