aboutsummaryrefslogtreecommitdiff
path: root/tccpp.c
diff options
context:
space:
mode:
authorChangming Xu <xcmhit@gmail.com>2011-02-27 10:15:15 +0800
committerChangming Xu <xcmhit@gmail.com>2011-02-27 10:15:15 +0800
commit185fba418978aabef36765fdfaf24d516f1a9f33 (patch)
treeb111a320671979f7cfd213ea1bdde95718e3864b /tccpp.c
parent1b85b5505961f0d5c52156fb6a5a54db199e1071 (diff)
downloadtinycc-185fba418978aabef36765fdfaf24d516f1a9f33.tar.gz
tinycc-185fba418978aabef36765fdfaf24d516f1a9f33.tar.bz2
tcc -E: append a ' ' after subst
We need a ' ' after subst of m in the following case #define m(name,r) name ## r #define m0(a,b,c) int m(a,b) c #define m1(a,b,c) int m(a,b)c m0(a, b, c); m1(a, b, c);
Diffstat (limited to 'tccpp.c')
-rw-r--r--tccpp.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/tccpp.c b/tccpp.c
index 88e6c79..e4bc0d0 100644
--- a/tccpp.c
+++ b/tccpp.c
@@ -2851,6 +2851,9 @@ static void macro_subst(TokenString *tok_str, Sym **nested_list,
/* first scan for '##' operator handling */
ptr = macro_str;
macro_str1 = macro_twosharps(ptr);
+
+ /* a ' ' after subst */
+ int append_space = 0;
if (macro_str1)
ptr = macro_str1;
spc = 0;
@@ -2888,8 +2891,15 @@ static void macro_subst(TokenString *tok_str, Sym **nested_list,
*can_read_stream = ml.prev;
if (ret != 0)
goto no_subst;
+ if (parse_flags & PARSE_FLAG_SPACES)
+ append_space = 1;
} else {
no_subst:
+ if (append_space) {
+ tok_str_add(tok_str, ' ');
+ spc = 1;
+ append_space = 0;
+ }
if (!check_space(t, &spc))
tok_str_add2(tok_str, t, &cval);
}