forked from Mirrors/tinycc
fixed macro function bug
parent
34b7d96fec
commit
f46a02a360
|
@ -7,6 +7,7 @@ version 0.9.17:
|
||||||
- function parameters must be converted to pointers (signaled by Neil Brown)
|
- function parameters must be converted to pointers (signaled by Neil Brown)
|
||||||
- sanitized string and character constant parsing
|
- sanitized string and character constant parsing
|
||||||
- fixed comment parse (signaled by Damian M Gryski)
|
- fixed comment parse (signaled by Damian M Gryski)
|
||||||
|
- fixed macro function bug (signaled by Philippe Ribet)
|
||||||
|
|
||||||
version 0.9.16:
|
version 0.9.16:
|
||||||
|
|
||||||
|
|
11
tcc.c
11
tcc.c
|
@ -3749,7 +3749,14 @@ static int macro_subst_tok(TokenString *tok_str,
|
||||||
next token. XXX: find better solution */
|
next token. XXX: find better solution */
|
||||||
if (macro_ptr) {
|
if (macro_ptr) {
|
||||||
t = *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 {
|
} else {
|
||||||
|
parse_stream:
|
||||||
/* XXX: incorrect with comments */
|
/* XXX: incorrect with comments */
|
||||||
ch = file->buf_ptr[0];
|
ch = file->buf_ptr[0];
|
||||||
while (is_space(ch) || ch == '\n')
|
while (is_space(ch) || ch == '\n')
|
||||||
|
@ -3981,6 +3988,10 @@ static void macro_subst(TokenString *tok_str,
|
||||||
if (macro_str1)
|
if (macro_str1)
|
||||||
ptr = macro_str1;
|
ptr = macro_str1;
|
||||||
while (1) {
|
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);
|
TOK_GET(t, ptr, cval);
|
||||||
if (t == 0)
|
if (t == 0)
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue