diff options
Diffstat (limited to 'src/tracking')
-rw-r--r-- | src/tracking/change_tracker.cc | 4 | ||||
-rw-r--r-- | src/tracking/change_tracker.h | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/tracking/change_tracker.cc b/src/tracking/change_tracker.cc index 1b554aa..ca07214 100644 --- a/src/tracking/change_tracker.cc +++ b/src/tracking/change_tracker.cc @@ -82,6 +82,8 @@ bool ChangeTracker::track(const std::string& file_path) { boost::filesystem::canonical(file_path).string() }; + std::unique_lock<std::mutex> guard(this->write_mutex_); + auto result = this->children_.emplace( full_file_path, std::make_unique<boost::process::child>( @@ -92,6 +94,8 @@ bool ChangeTracker::track(const std::string& file_path) { ) ); + guard.unlock(); + if ( std::get<EMPLACE_SUCCESS>(result) ) { boost::filesystem::ifstream file( std::get<FILE_NAME>(*result.first) diff --git a/src/tracking/change_tracker.h b/src/tracking/change_tracker.h index 24251e5..e694b56 100644 --- a/src/tracking/change_tracker.h +++ b/src/tracking/change_tracker.h @@ -2,6 +2,7 @@ #define CHANGE_SRC_TRACKING_CHANGE_TRACKER_H_ #include <unordered_map> +#include <mutex> #include <boost/process.hpp> @@ -22,6 +23,7 @@ class ChangeTracker { private: const std::string diff_cmd_; utility::Logger* const logger_; + std::mutex write_mutex_; std::unordered_map< std::string, std::unique_ptr<boost::process::child> |