From e3af038dd25cb1f5c4955b8026354ea7363aab2c Mon Sep 17 00:00:00 2001 From: atsushi421 Date: Sun, 8 Dec 2024 12:29:05 +0900 Subject: [PATCH 1/3] fix: bug when take null Signed-off-by: atsushi421 --- src/agnocastlib/include/agnocast_subscription.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/agnocastlib/include/agnocast_subscription.hpp b/src/agnocastlib/include/agnocast_subscription.hpp index 3c215e1b..10cc4696 100644 --- a/src/agnocastlib/include/agnocast_subscription.hpp +++ b/src/agnocastlib/include/agnocast_subscription.hpp @@ -157,7 +157,12 @@ class PollingSubscriber if (new_data) { data_ = std::move(new_data); } - return data_; + + if (data_) { + return data_; + } else { + return agnocast::ipc_shared_ptr(); + } }; }; From 45deb02de158380576ed439767c785ad4b75f2eb Mon Sep 17 00:00:00 2001 From: atsushi421 Date: Sun, 8 Dec 2024 23:15:57 +0900 Subject: [PATCH 2/3] fix --- src/agnocastlib/include/agnocast_smart_pointer.hpp | 2 +- src/agnocastlib/include/agnocast_subscription.hpp | 6 +----- src/agnocastlib/test/test_agnocast_smart_pointer.cpp | 8 ++++++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/agnocastlib/include/agnocast_smart_pointer.hpp b/src/agnocastlib/include/agnocast_smart_pointer.hpp index fa82b6ae..02f75104 100644 --- a/src/agnocastlib/include/agnocast_smart_pointer.hpp +++ b/src/agnocastlib/include/agnocast_smart_pointer.hpp @@ -73,7 +73,7 @@ class ipc_shared_ptr timestamp_(r.timestamp_), is_created_by_borrow_(r.is_created_by_borrow_) { - if (!is_created_by_borrow_) { + if (ptr_ != nullptr && !is_created_by_borrow_) { RCLCPP_ERROR( logger, "Copying an ipc_shared_ptr is not allowed if it was created by borrow_loaned_message()."); diff --git a/src/agnocastlib/include/agnocast_subscription.hpp b/src/agnocastlib/include/agnocast_subscription.hpp index 10cc4696..c3cf64bc 100644 --- a/src/agnocastlib/include/agnocast_subscription.hpp +++ b/src/agnocastlib/include/agnocast_subscription.hpp @@ -158,11 +158,7 @@ class PollingSubscriber data_ = std::move(new_data); } - if (data_) { - return data_; - } else { - return agnocast::ipc_shared_ptr(); - } + return data_; }; }; diff --git a/src/agnocastlib/test/test_agnocast_smart_pointer.cpp b/src/agnocastlib/test/test_agnocast_smart_pointer.cpp index 16071313..68dd00bf 100644 --- a/src/agnocastlib/test/test_agnocast_smart_pointer.cpp +++ b/src/agnocastlib/test/test_agnocast_smart_pointer.cpp @@ -72,6 +72,14 @@ TEST_F(AgnocastSmartPointerTest, copy_constructor_isnt_created_by_borrow) "Copying an ipc_shared_ptr is not allowed if it was created by borrow_loaned_message()."); } +TEST_F(AgnocastSmartPointerTest, copy_constructor_empty) +{ + EXPECT_GLOBAL_CALL(increment_rc_core, increment_rc_core(dummy_tn, dummy_pid, dummy_ts)).Times(0); + EXPECT_GLOBAL_CALL(decrement_rc, decrement_rc(dummy_tn, dummy_pid, dummy_ts)).Times(0); + agnocast::ipc_shared_ptr sut; + EXPECT_NO_THROW(agnocast::ipc_shared_ptr sut2{sut}); +} + TEST_F(AgnocastSmartPointerTest, move_constructor_normal) { int * ptr = new int(0); From dbd206d808e188d4195e08c840feb338d07cad99 Mon Sep 17 00:00:00 2001 From: atsushi yano <55824710+atsushi421@users.noreply.github.com> Date: Sun, 8 Dec 2024 23:16:44 +0900 Subject: [PATCH 3/3] fix --- src/agnocastlib/include/agnocast_subscription.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/agnocastlib/include/agnocast_subscription.hpp b/src/agnocastlib/include/agnocast_subscription.hpp index c3cf64bc..3c215e1b 100644 --- a/src/agnocastlib/include/agnocast_subscription.hpp +++ b/src/agnocastlib/include/agnocast_subscription.hpp @@ -157,7 +157,6 @@ class PollingSubscriber if (new_data) { data_ = std::move(new_data); } - return data_; }; };