aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrischka <grischka>2016-04-29 19:00:33 +0200
committergrischka <grischka>2016-04-29 19:00:33 +0200
commit256078933c8152038fd0d4fbff1d92b3bb3a14a3 (patch)
tree73263be6e03e7b02ab1e5d9449237923202f277b
parent68ce8639bbd09be6eada4fb1a497cbde7a674e0c (diff)
downloadtinycc-256078933c8152038fd0d4fbff1d92b3bb3a14a3.tar.gz
tinycc-256078933c8152038fd0d4fbff1d92b3bb3a14a3.tar.bz2
tccpp: macro subst fix
#define Y(x) Z(x) #define X Y return X(X(1)); was : return Z(Y(1)); now : return Z(Z(1));
-rw-r--r--tccpp.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/tccpp.c b/tccpp.c
index d6ae6ef..94f0b5f 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -3135,10 +3135,10 @@ static int next_argstream(Sym **nested_list, int can_read_stream, TokenString *w
end_macro();
/* also, end of scope for nested defined symbol */
sa = *nested_list;
- while (sa && sa->v == -1)
+ while (sa && sa->v == 0)
sa = sa->prev;
if (sa)
- sa->v = -1;
+ sa->v = 0;
continue;
}
} else {
@@ -3330,7 +3330,7 @@ static int macro_subst_tok(
sym_push2(nested_list, s->v, 0, 0);
parse_flags = saved_parse_flags;
- macro_subst(tok_str, nested_list, mstr, can_read_stream);
+ macro_subst(tok_str, nested_list, mstr, can_read_stream | 2);
/* pop nested defined symbol */
sa1 = *nested_list;
@@ -3454,7 +3454,7 @@ static void macro_subst(
spc = nosubst = 0;
/* first scan for '##' operator handling */
- if (can_read_stream) {
+ if (can_read_stream & 1) {
macro_str1 = macro_twosharps(ptr);
if (macro_str1)
ptr = macro_str1;