зеркало из https://github.com/microsoft/clang-1.git
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
This commit is contained in:
Родитель
9e18d3ed84
Коммит
c21d9e4766
|
@ -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(<eof>" & "#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)) {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче