Author: Saleem Abdulrasool Date: 2021-06-15T09:15:17-07:00 New Revision: a6948da86ad7e78d66b26263c2681ef6385cc234
URL: https://github.com/llvm/llvm-project/commit/a6948da86ad7e78d66b26263c2681ef6385cc234 DIFF: https://github.com/llvm/llvm-project/commit/a6948da86ad7e78d66b26263c2681ef6385cc234.diff LOG: DirectoryWatcher: close a possible window of race on Windows The initial scan occurring before the watcher is ready allows a race condition where a change occurs before the initial scan completes. Ensure that we wait for the watcher to begin executing the initial scan. Addresses some feedback from Adrian McCarthy in post-commit review. Added: Modified: clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp Removed: ################################################################################ diff --git a/clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp b/clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp index 847d20bfbb6f..8a4f5a87d967 100644 --- a/clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp +++ b/clang/lib/DirectoryWatcher/windows/DirectoryWatcher-windows.cpp @@ -133,6 +133,9 @@ DirectoryWatcherWindows::~DirectoryWatcherWindows() { } void DirectoryWatcherWindows::InitialScan() { + std::unique_lock<std::mutex> lock(Mutex); + Ready.wait(lock, [this] { return this->WatcherActive; }); + Callback(getAsFileEvents(scanDirectory(Path.data())), /*IsInitial=*/true); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits