Skip to content

Commit a686c41

Browse files
committed
Do not replace existing entry in shared cache
1 parent 6dd1fa8 commit a686c41

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

clang/lib/Tooling/DependencyScanning/DependencyScanningFilesystem.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,11 @@ DependencyScanningFilesystemSharedCache::CacheShard::
159159
getOrInsertEntryForFilename(StringRef Filename,
160160
const CachedFileSystemEntry &Entry) {
161161
std::lock_guard<std::mutex> LockGuard(CacheLock);
162-
CacheByFilename[Filename].first = &Entry;
163-
return Entry;
162+
auto [It, Inserted] = CacheByFilename.insert({Filename, {&Entry, nullptr}});
163+
auto &[CachedEntry, CachedRealPath] = It->getValue();
164+
if (!Inserted || !CachedEntry)
165+
CachedEntry = &Entry;
166+
return *CachedEntry;
164167
}
165168

166169
const CachedRealPath *

0 commit comments

Comments
 (0)