From daf6201d156e6c7ec45295fe1432d6e714a9283b Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Fri, 1 Apr 2022 10:28:43 +1300 Subject: [PATCH 1/2] core: fix variable name in lazy plugin --- src/mavsdk/core/lazy_plugin.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mavsdk/core/lazy_plugin.h b/src/mavsdk/core/lazy_plugin.h index 7b543aba31..0d82733675 100644 --- a/src/mavsdk/core/lazy_plugin.h +++ b/src/mavsdk/core/lazy_plugin.h @@ -12,18 +12,18 @@ template class LazyPlugin { Plugin* maybe_plugin() { - if (_action == nullptr) { + if (_plugin == nullptr) { if (_mavsdk.systems().empty()) { return nullptr; } - _action = std::make_unique(_mavsdk.systems()[0]); + _plugin = std::make_unique(_mavsdk.systems()[0]); } - return _action.get(); + return _plugin.get(); } private: Mavsdk& _mavsdk; - std::unique_ptr _action{}; + std::unique_ptr _plugin{}; }; } // namespace mavsdk::mavsdk_server From 2ee1a55b01b482cd0ebed32f114550685299456a Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Fri, 1 Apr 2022 10:52:30 +1300 Subject: [PATCH 2/2] core: make LazyPlugin thread-safe Before this, we could potentially create multiple plugins and overwrite each other. --- src/mavsdk/core/lazy_plugin.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mavsdk/core/lazy_plugin.h b/src/mavsdk/core/lazy_plugin.h index 0d82733675..42bf7f3741 100644 --- a/src/mavsdk/core/lazy_plugin.h +++ b/src/mavsdk/core/lazy_plugin.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include @@ -12,6 +13,7 @@ template class LazyPlugin { Plugin* maybe_plugin() { + std::lock_guard lock(_mutex); if (_plugin == nullptr) { if (_mavsdk.systems().empty()) { return nullptr; @@ -24,6 +26,7 @@ template class LazyPlugin { private: Mavsdk& _mavsdk; std::unique_ptr _plugin{}; + std::mutex _mutex{}; }; } // namespace mavsdk::mavsdk_server