diff --git a/usr.bin/make/parse.c b/usr.bin/make/parse.c index 4d8305a3272d..275aa9831db0 100644 --- a/usr.bin/make/parse.c +++ b/usr.bin/make/parse.c @@ -299,7 +299,9 @@ Parse_Error(int type, const char *fmt, ...) va_list ap; va_start(ap, fmt); - fprintf(stderr, "\"%s\", line %d: ", CURFILE->fname, CURFILE->lineno); + if (CURFILE != NULL) + fprintf(stderr, "\"%s\", line %d: ", + CURFILE->fname, CURFILE->lineno); if (type == PARSE_WARNING) fprintf(stderr, "warning: "); vfprintf(stderr, fmt, ap); @@ -2233,8 +2235,10 @@ ParseReadLine(void) line = ParseSkipLine(1, 0); } while (line && Cond_Eval(line, CURFILE->lineno) != COND_PARSE); - if (line == NULL) - break; + if (line == NULL) { + /* try to pop input stack */ + goto again; + } /*FALLTHRU*/ case COND_PARSE: