diff options
| author | Philip <pipcet@gmail.com> | 2015-05-02 12:33:45 +0000 |
|---|---|---|
| committer | Philip <pipcet@gmail.com> | 2015-05-02 12:33:45 +0000 |
| commit | a3d78b95d7564c92afa09604fde6387a03d3acde (patch) | |
| tree | 987c4b55f57ce7954603f75de09fd446cf226181 /tccpp.c | |
| parent | 1e878200f7bbabeb36f5d0e941402fed12148cc7 (diff) | |
| download | tinycc-a3d78b95d7564c92afa09604fde6387a03d3acde.tar.gz tinycc-a3d78b95d7564c92afa09604fde6387a03d3acde.tar.bz2 | |
tccpp.c: fix endless loop
Perhaps a better fix would be to ensure tok is set to TOK_EOF rather
than 0 at the end of a macro stream.
This partially fixes test2 of the examples given in:
http://lists.nongnu.org/archive/html/tinycc-devel/2015-05/msg00002.html
It's still failing, but at least it's not running out of memory now.
Diffstat (limited to 'tccpp.c')
| -rw-r--r-- | tccpp.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -2930,8 +2930,9 @@ static int macro_subst_tok(TokenString *tok_str, /* NOTE: non zero sa->t indicates VA_ARGS */ while ((parlevel > 0 || (tok != ')' && - (tok != ',' || sa->type.t))) && - tok != -1) { + (tok != ',' || sa->type.t)))) { + if (tok == TOK_EOF || tok == 0) + break; if (tok == '(') parlevel++; else if (tok == ')') |
