From 859ebabdc2ac9c94537f4344f69c4f5d1b8bb9db Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 08:07:21 +0100 Subject: [PATCH] Fix double-locking issue in `DataSharingListener` (#5468) (#5521) Signed-off-by: Xiaojing Cao (cherry picked from commit 059457aad375a3d9422acd1336f2e3e4f55a11c0) Co-authored-by: xjzer <62737335+xjzer@users.noreply.github.com> --- src/cpp/rtps/DataSharing/DataSharingListener.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/cpp/rtps/DataSharing/DataSharingListener.cpp b/src/cpp/rtps/DataSharing/DataSharingListener.cpp index ce1693f50eb..294e78bbc91 100644 --- a/src/cpp/rtps/DataSharing/DataSharingListener.cpp +++ b/src/cpp/rtps/DataSharing/DataSharingListener.cpp @@ -56,18 +56,15 @@ DataSharingListener::~DataSharingListener() void DataSharingListener::run() { - std::unique_lock lock(notification_->notification_->notification_mutex, std::defer_lock); while (is_running_.load()) { try { - lock.lock(); + std::unique_lock lock(notification_->notification_->notification_mutex); notification_->notification_->notification_cv.wait(lock, [&] { return !is_running_.load() || notification_->notification_->new_data.load(); }); - - lock.unlock(); } catch (const boost::interprocess::interprocess_exception& /*e*/) {