fixed macro function bug

This commit is contained in:
bellard 2003-04-13 18:32:37 +00:00
parent 34b7d96fec
commit f46a02a360
2 changed files with 12 additions and 0 deletions

View File

@ -7,6 +7,7 @@ version 0.9.17:
- function parameters must be converted to pointers (signaled by Neil Brown)
- sanitized string and character constant parsing
- fixed comment parse (signaled by Damian M Gryski)
- fixed macro function bug (signaled by Philippe Ribet)
version 0.9.16:

11
tcc.c
View File

@ -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;