From: Chris Lattner Date: Tue, 22 Jan 2008 19:34:51 +0000 (+0000) Subject: Fix PR1936, a crash on malformed #if. Thanks to Neil for X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c21d9e4766a6200dc4b2aaba3590b49114d19acd;p=clang Fix PR1936, a crash on malformed #if. Thanks to Neil for noticing this! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46256 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Lex/Preprocessor.cpp b/Lex/Preprocessor.cpp index cb5a350758..d831093268 100644 --- a/Lex/Preprocessor.cpp +++ b/Lex/Preprocessor.cpp @@ -939,9 +939,9 @@ MacroArgs *Preprocessor::ReadFunctionLikeMacroArgs(Token &MacroName, // an argument value in a macro could expand to ',' or '(' or ')'. LexUnexpandedToken(Tok); - if (Tok.is(tok::eof)) { + if (Tok.is(tok::eof) || Tok.is(tok::eom)) { // "#if f(" & "#if f(\n" Diag(MacroName, diag::err_unterm_macro_invoc); - // Do not lose the EOF. Return it to the client. + // Do not lose the EOF/EOM. Return it to the client. MacroName = Tok; return 0; } else if (Tok.is(tok::r_paren)) { diff --git a/test/Preprocessor/ifdef-recover.c b/test/Preprocessor/ifdef-recover.c index 2009514f5e..bd1d507bbc 100644 --- a/test/Preprocessor/ifdef-recover.c +++ b/test/Preprocessor/ifdef-recover.c @@ -1,7 +1,15 @@ -/* RUN: clang %s 2>&1 | grep error: | count 1 +/* RUN: clang %s 2>&1 | grep error: | count 3 */ #ifdef #endif +/* End of function-like macro invocation in #ifdef */ +/* PR1936 */ +#define f(x) x +#if f(2 +#endif + +int x; +