Give SourceManager a Diagnostic object with which to report errors,
and start simplifying the interfaces in SourceManager that can fail.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@98594 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/TextDiagnosticPrinter.cpp b/lib/Frontend/TextDiagnosticPrinter.cpp
index 2b243fa..946a6ca 100644
--- a/lib/Frontend/TextDiagnosticPrinter.cpp
+++ b/lib/Frontend/TextDiagnosticPrinter.cpp
@@ -330,15 +330,14 @@
   unsigned FileOffset = LocInfo.second;
 
   // Get information about the buffer it points into.
-  llvm::StringRef ErrorFileName;
-  std::string ErrorStr;
+  bool Invalid = false;
   std::pair<const char*, const char*> BufferInfo = SM.getBufferData(FID, 
-                                                                  ErrorFileName,
-                                                                    ErrorStr);
-  const char *BufStart = BufferInfo.first;
-  if (!BufStart)
+                                                                    &Invalid);
+  if (Invalid)
     return;
   
+  const char *BufStart = BufferInfo.first;
+  
   unsigned ColNo = SM.getColumnNumber(FID, FileOffset);
   unsigned CaretEndColNo
     = ColNo + Lexer::MeasureTokenLength(Loc, SM, *LangOpts);