Fix use of invalidated iterator introduced by r369680.

llvm-svn: 369932
This commit is contained in:
Richard Smith 2019-08-26 17:31:06 +00:00
parent b1c9079102
commit 98f9e94e57
1 changed files with 4 additions and 4 deletions

View File

@ -263,15 +263,15 @@ FileManager::getFileRef(StringRef Filename, bool openFile, bool CacheFailure) {
// If the name returned by getStatValue is different than Filename, re-intern
// the name.
if (Status.getName() != Filename) {
auto &NamedFileEnt =
auto &NewNamedFileEnt =
*SeenFileEntries.insert({Status.getName(), &UFE}).first;
assert((*NamedFileEnt.second).get<FileEntry *>() == &UFE &&
assert((*NewNamedFileEnt.second).get<FileEntry *>() == &UFE &&
"filename from getStatValue() refers to wrong file");
InterndFileName = NamedFileEnt.first().data();
InterndFileName = NewNamedFileEnt.first().data();
// In addition to re-interning the name, construct a redirecting seen file
// entry, that will point to the name the filesystem actually wants to use.
StringRef *Redirect = new (CanonicalNameStorage) StringRef(InterndFileName);
SeenFileInsertResult.first->second = Redirect;
NamedFileEnt.second = Redirect;
}
if (UFE.isValid()) { // Already have an entry with this inode, return it.