]> granicus.if.org Git - clang/commitdiff
generalize the "end of line" checking logic to stop at any \0 at the
authorChris Lattner <sabre@nondot.org>
Sun, 8 Mar 2009 08:11:22 +0000 (08:11 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 8 Mar 2009 08:11:22 +0000 (08:11 +0000)
end of line instead of just the end of buffer.  Scratch buffers contain
embedded \0's between tokens which are logic line separators.  If a
normal text buffer contains \0's, it doesn't make a lot of sense to include
them in the caret diag output anyway.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66374 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Frontend/TextDiagnosticPrinter.cpp

index d3e46ff0292bd5a45c6da53a856b944d851b8fc5..3e6c3ae74bfec0f44d6057670109a7fe9f31402a 100644 (file)
@@ -145,7 +145,6 @@ void TextDiagnosticPrinter::EmitCaretDiagnostic(SourceLocation Loc,
   // Get information about the buffer it points into.
   std::pair<const char*, const char*> BufferInfo = SM.getBufferData(FID);
   const char *BufStart = BufferInfo.first;
-  const char *BufEnd = BufferInfo.second;
 
   unsigned ColNo = SM.getColumnNumber(FID, FileOffset);
   
@@ -157,8 +156,7 @@ void TextDiagnosticPrinter::EmitCaretDiagnostic(SourceLocation Loc,
   // Compute the line end.  Scan forward from the error position to the end of
   // the line.
   const char *LineEnd = TokPtr;
-  while (LineEnd != BufEnd && 
-         *LineEnd != '\n' && *LineEnd != '\r')
+  while (*LineEnd != '\n' && *LineEnd != '\r' && *LineEnd != '\0')
     ++LineEnd;
   
   // Copy the line of code into an std::string for ease of manipulation.