diff options
| author | grischka <grischka> | 2016-04-29 19:00:33 +0200 |
|---|---|---|
| committer | grischka <grischka> | 2016-04-29 19:00:33 +0200 |
| commit | 256078933c8152038fd0d4fbff1d92b3bb3a14a3 (patch) | |
| tree | 73263be6e03e7b02ab1e5d9449237923202f277b | |
| parent | 68ce8639bbd09be6eada4fb1a497cbde7a674e0c (diff) | |
| download | tinycc-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.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -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; |
