From 08c2500f9c0e7d6c22021f7ad70955c367c59e93 Mon Sep 17 00:00:00 2001 From: Alp Toker Date: Fri, 13 Dec 2013 17:04:55 +0000 Subject: Fix raw lex crash and -frewrite-includes noeol-at-eof failure Raw lexers don't have a preprocessor so we need to null check. llvm-svn: 197245 --- clang/lib/Rewrite/Frontend/InclusionRewriter.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'clang/lib/Rewrite/Frontend/InclusionRewriter.cpp') diff --git a/clang/lib/Rewrite/Frontend/InclusionRewriter.cpp b/clang/lib/Rewrite/Frontend/InclusionRewriter.cpp index a2e0db69619..0e3e53498b5 100644 --- a/clang/lib/Rewrite/Frontend/InclusionRewriter.cpp +++ b/clang/lib/Rewrite/Frontend/InclusionRewriter.cpp @@ -77,7 +77,7 @@ private: void OutputContentUpTo(const MemoryBuffer &FromFile, unsigned &WriteFrom, unsigned WriteTo, StringRef EOL, int &lines, - bool EnsureNewline = false); + bool EnsureNewline); void CommentOutDirective(Lexer &DirectivesLex, const Token &StartToken, const MemoryBuffer &FromFile, StringRef EOL, unsigned &NextToWrite, int &Lines); @@ -250,7 +250,7 @@ void InclusionRewriter::CommentOutDirective(Lexer &DirectiveLex, StringRef EOL, unsigned &NextToWrite, int &Line) { OutputContentUpTo(FromFile, NextToWrite, - SM.getFileOffset(StartToken.getLocation()), EOL, Line); + SM.getFileOffset(StartToken.getLocation()), EOL, Line, false); Token DirectiveToken; do { DirectiveLex.LexFromRawLexer(DirectiveToken); @@ -258,7 +258,7 @@ void InclusionRewriter::CommentOutDirective(Lexer &DirectiveLex, OS << "#if 0 /* expanded by -frewrite-includes */" << EOL; OutputContentUpTo(FromFile, NextToWrite, SM.getFileOffset(DirectiveToken.getLocation()) + DirectiveToken.getLength(), - EOL, Line); + EOL, Line, true); OS << "#endif /* expanded by -frewrite-includes */" << EOL; } @@ -462,12 +462,12 @@ bool InclusionRewriter::Process(FileID FileId, // Replace the macro with (0) or (1), followed by the commented // out macro for reference. OutputContentUpTo(FromFile, NextToWrite, SM.getFileOffset(Loc), - EOL, Line); + EOL, Line, false); OS << '(' << (int) HasFile << ")/*"; OutputContentUpTo(FromFile, NextToWrite, SM.getFileOffset(RawToken.getLocation()) + RawToken.getLength(), - EOL, Line); + EOL, Line, false); OS << "*/"; } } while (RawToken.isNot(tok::eod)); -- cgit v1.2.3