]> granicus.if.org Git - clang/commitdiff
Eliminate a race condition with the global module index.
authorDouglas Gregor <dgregor@apple.com>
Wed, 6 Feb 2013 18:08:37 +0000 (18:08 +0000)
committerDouglas Gregor <dgregor@apple.com>
Wed, 6 Feb 2013 18:08:37 +0000 (18:08 +0000)
Essentially, a module file on disk could change size between the time
we stat() it and the time we open it, and we need to be robust against
such a problem.

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

lib/Serialization/GlobalModuleIndex.cpp

index 72165bcfc59b3744e49543b5535aee1beced41e2..5b2ab913fa00d26b46355e5c23b53dcd0321cd3c 100644 (file)
@@ -536,7 +536,8 @@ namespace {
 bool GlobalModuleIndexBuilder::loadModuleFile(const FileEntry *File) {
   // Open the module file.
   OwningPtr<llvm::MemoryBuffer> Buffer;
-  Buffer.reset(FileMgr.getBufferForFile(File));
+  std::string ErrorStr;
+  Buffer.reset(FileMgr.getBufferForFile(File, &ErrorStr, /*isVolatile=*/true));
   if (!Buffer) {
     return true;
   }