From a3d78b95d7564c92afa09604fde6387a03d3acde Mon Sep 17 00:00:00 2001 From: Philip Date: Sat, 2 May 2015 12:33:45 +0000 Subject: [PATCH] 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. --- tccpp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tccpp.c b/tccpp.c index d097776..56779e0 100644 --- a/tccpp.c +++ b/tccpp.c @@ -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 == ')')