From 027731d7b514123af03287b42d7366291b58d6e0 Mon Sep 17 00:00:00 2001 From: Ben Langmuir Date: Sun, 4 May 2014 05:20:54 +0000 Subject: Fix a use-after-free bug I recently introduced in lookupModuleFile llvm-svn: 207932 --- clang/lib/Serialization/ModuleManager.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'clang/lib/Serialization/ModuleManager.cpp') diff --git a/clang/lib/Serialization/ModuleManager.cpp b/clang/lib/Serialization/ModuleManager.cpp index 9b3159e1..66f1815 100644 --- a/clang/lib/Serialization/ModuleManager.cpp +++ b/clang/lib/Serialization/ModuleManager.cpp @@ -390,11 +390,10 @@ bool ModuleManager::lookupModuleFile(StringRef FileName, } if ((ExpectedSize && ExpectedSize != File->getSize()) || - (ExpectedModTime && ExpectedModTime != File->getModificationTime())) { - FileMgr.invalidateCache(File); - File = nullptr; + (ExpectedModTime && ExpectedModTime != File->getModificationTime())) + // Do not destroy File, as it may be referenced. If we need to rebuild it, + // it will be destroyed by removeModules. return true; - } return false; } -- cgit v1.1