]> granicus.if.org Git - clang/commitdiff
If we're dealing with an overridden buffer in the AST reader, load the
authorDouglas Gregor <dgregor@apple.com>
Thu, 17 Nov 2011 19:08:51 +0000 (19:08 +0000)
committerDouglas Gregor <dgregor@apple.com>
Thu, 17 Nov 2011 19:08:51 +0000 (19:08 +0000)
file as a virtual file with the stored modification time and size.

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

lib/Serialization/ASTReader.cpp

index b9120ed227c225fdada3bd153268fccd6e0dae85..de90c7b929fae355e6fbfba2d5bc4cbfa8e24d1e 100644 (file)
@@ -1091,8 +1091,10 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(int ID) {
     std::string OrigFilename(BlobStart, BlobStart + BlobLen);
     std::string Filename = OrigFilename;
     MaybeAddSystemRootToFilename(Filename);
-    const FileEntry *File = FileMgr.getFile(Filename, /*OpenFile=*/false,
-                                            /*CacheFailure=*/!OverriddenBuffer);
+    const FileEntry *File = 
+      OverriddenBuffer? FileMgr.getVirtualFile(Filename, (off_t)Record[4],
+                                               (time_t)Record[5])
+                      : FileMgr.getFile(Filename, /*OpenFile=*/false);
     if (File == 0 && !OriginalDir.empty() && !CurrentDir.empty() &&
         OriginalDir != CurrentDir) {
       std::string resolved = resolveFileRelativeToOriginalDir(Filename,