diff options
-rw-r--r-- | include/clang/Basic/SourceManager.h | 4 | ||||
-rw-r--r-- | tools/libclang/CIndex.cpp | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index 985ddd6412..52b5c4512e 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -1213,6 +1213,10 @@ public: } const SrcMgr::SLocEntry &getSLocEntry(FileID FID, bool *Invalid = 0) const { + if (FID.ID == 0 || FID.ID == -1) { + if (Invalid) *Invalid = true; + return LocalSLocEntryTable[0]; + } return getSLocEntryByID(FID.ID); } diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index e085a27c09..3130a029e7 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -2814,7 +2814,7 @@ void clang_getExpansionLocation(CXSourceLocation location, FileID fileID = SM.getFileID(ExpansionLoc); bool Invalid = false; const SrcMgr::SLocEntry &sloc = SM.getSLocEntry(fileID, &Invalid); - if (!sloc.isFile() || Invalid) { + if (Invalid || !sloc.isFile()) { createNullLocation(file, line, column, offset); return; } |