diff --git a/tccpp.c b/tccpp.c index b44296d..86a3aeb 100644 --- a/tccpp.c +++ b/tccpp.c @@ -3039,13 +3039,15 @@ static inline int *macro_twosharps(const int *macro_str) if (tok != TOK_PLCHLDR) cstr_cat(&cstr, get_tok_str(tok, &tokc)); n = cstr.size; - if (t != TOK_PLCHLDR || tok == TOK_PLCHLDR) + if (t != TOK_PLCHLDR) cstr_cat(&cstr, get_tok_str(t, &cval)); cstr_ccat(&cstr, '\0'); tcc_open_bf(tcc_state, ":paste:", cstr.size); memcpy(file->buffer, cstr.data, cstr.size); for (;;) { + if (0 == *file->buf_ptr) + break; next_nomacro1(); if (0 == *file->buf_ptr) break; @@ -3058,7 +3060,8 @@ static inline int *macro_twosharps(const int *macro_str) } } if (tok != TOK_NOSUBST) { - tok_str_add2(¯o_str1, tok, &tokc); + if (tok != TOK_PLCHLDR) + tok_str_add2(¯o_str1, tok, &tokc); tok = ' '; start_of_nosubsts = -1; }