From: John McCall Date: Sun, 29 Aug 2010 01:09:54 +0000 (+0000) Subject: Complain if a __pragma isn't terminated. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3da92a9d21f707c164797dd967ba894b2282b343;p=clang Complain if a __pragma isn't terminated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112392 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticLexKinds.td b/include/clang/Basic/DiagnosticLexKinds.td index 08ba1c43cc..07f53d9867 100644 --- a/include/clang/Basic/DiagnosticLexKinds.td +++ b/include/clang/Basic/DiagnosticLexKinds.td @@ -51,6 +51,7 @@ def err_empty_character : Error<"empty character constant">; def err_unterminated_block_comment : Error<"unterminated /* comment">; def err_invalid_character_to_charify : Error< "invalid argument to convert to character">; +def err_unterminated___pragma : Error<"missing terminating ')' character">; def err_conflict_marker : Error<"version control conflict marker in file">; diff --git a/lib/Lex/Pragma.cpp b/lib/Lex/Pragma.cpp index af676670d1..de713ebae6 100644 --- a/lib/Lex/Pragma.cpp +++ b/lib/Lex/Pragma.cpp @@ -202,6 +202,11 @@ void Preprocessor::HandleMicrosoft__pragma(Token &Tok) { Lex(Tok); } + if (Tok.is(tok::eof)) { + Diag(PragmaLoc, diag::err_unterminated___pragma); + return; + } + // Build the pragma string. std::string StrVal = " "; for (llvm::SmallVector::iterator I =