From f46a02a3609fdb876ec1462cdfd550cffdeb22f3 Mon Sep 17 00:00:00 2001 From: bellard Date: Sun, 13 Apr 2003 18:32:37 +0000 Subject: fixed macro function bug --- tcc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'tcc.c') diff --git a/tcc.c b/tcc.c index 26851f9..d894608 100644 --- a/tcc.c +++ b/tcc.c @@ -3749,7 +3749,14 @@ static int macro_subst_tok(TokenString *tok_str, next token. XXX: find better solution */ if (macro_ptr) { t = *macro_ptr; + if (t == 0) { + /* end of macro stream: we must look at the token + after in the file */ + macro_ptr = NULL; + goto parse_stream; + } } else { + parse_stream: /* XXX: incorrect with comments */ ch = file->buf_ptr[0]; while (is_space(ch) || ch == '\n') @@ -3981,6 +3988,10 @@ static void macro_subst(TokenString *tok_str, if (macro_str1) ptr = macro_str1; while (1) { + /* NOTE: ptr == NULL can only happen if tokens are read from + file stream due to a macro function call */ + if (ptr == NULL) + break; TOK_GET(t, ptr, cval); if (t == 0) break; -- cgit v1.3.1