summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Frontend')
-rw-r--r--clang/lib/Frontend/RewriteObjC.cpp17
-rw-r--r--clang/lib/Frontend/TextDiagnosticPrinter.cpp10
2 files changed, 22 insertions, 5 deletions
diff --git a/clang/lib/Frontend/RewriteObjC.cpp b/clang/lib/Frontend/RewriteObjC.cpp
index 3181a55088b..cd3d4ee0b96 100644
--- a/clang/lib/Frontend/RewriteObjC.cpp
+++ b/clang/lib/Frontend/RewriteObjC.cpp
@@ -706,7 +706,11 @@ void RewriteObjC::HandleTopLevelSingleDecl(Decl *D) {
void RewriteObjC::RewriteInclude() {
SourceLocation LocStart = SM->getLocForStartOfFile(MainFileID);
- std::pair<const char*, const char*> MainBuf = SM->getBufferData(MainFileID);
+ std::pair<const char*, const char*> MainBuf = SM->getBufferData(MainFileID,
+ Diags);
+ if (!MainBuf.first)
+ return;
+
const char *MainBufStart = MainBuf.first;
const char *MainBufEnd = MainBuf.second;
size_t ImportLen = strlen("import");
@@ -731,7 +735,11 @@ void RewriteObjC::RewriteInclude() {
}
void RewriteObjC::RewriteTabs() {
- std::pair<const char*, const char*> MainBuf = SM->getBufferData(MainFileID);
+ std::pair<const char*, const char*> MainBuf = SM->getBufferData(MainFileID,
+ Diags);
+ if (!MainBuf.first)
+ return;
+
const char *MainBufStart = MainBuf.first;
const char *MainBufEnd = MainBuf.second;
@@ -973,7 +981,10 @@ void RewriteObjC::RewriteCategoryDecl(ObjCCategoryDecl *CatDecl) {
}
void RewriteObjC::RewriteProtocolDecl(ObjCProtocolDecl *PDecl) {
- std::pair<const char*, const char*> MainBuf = SM->getBufferData(MainFileID);
+ std::pair<const char*, const char*> MainBuf = SM->getBufferData(MainFileID,
+ Diags);
+ if (!MainBuf.first)
+ return;
SourceLocation LocStart = PDecl->getLocStart();
diff --git a/clang/lib/Frontend/TextDiagnosticPrinter.cpp b/clang/lib/Frontend/TextDiagnosticPrinter.cpp
index 60c1f4b9b8a..2b243fad248 100644
--- a/clang/lib/Frontend/TextDiagnosticPrinter.cpp
+++ b/clang/lib/Frontend/TextDiagnosticPrinter.cpp
@@ -330,9 +330,15 @@ void TextDiagnosticPrinter::EmitCaretDiagnostic(SourceLocation Loc,
unsigned FileOffset = LocInfo.second;
// Get information about the buffer it points into.
- std::pair<const char*, const char*> BufferInfo = SM.getBufferData(FID);
+ llvm::StringRef ErrorFileName;
+ std::string ErrorStr;
+ std::pair<const char*, const char*> BufferInfo = SM.getBufferData(FID,
+ ErrorFileName,
+ ErrorStr);
const char *BufStart = BufferInfo.first;
-
+ if (!BufStart)
+ return;
+
unsigned ColNo = SM.getColumnNumber(FID, FileOffset);
unsigned CaretEndColNo
= ColNo + Lexer::MeasureTokenLength(Loc, SM, *LangOpts);
OpenPOWER on IntegriCloud