From 4cc446d9a2b08cc8115be45058f61857161a7856 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Wed, 11 Nov 2020 09:38:46 -0800 Subject: [PATCH] Avoid reference cycle to fix memory leak (#1301) (#1450) Signed-off-by: Chen Lihui Co-authored-by: Chen Lihui --- rclcpp/include/rclcpp/create_subscription.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/rclcpp/include/rclcpp/create_subscription.hpp b/rclcpp/include/rclcpp/create_subscription.hpp index 438cb72..9c22d17 100644 --- a/rclcpp/include/rclcpp/create_subscription.hpp +++ b/rclcpp/include/rclcpp/create_subscription.hpp @@ -117,8 +117,14 @@ create_subscription( rclcpp::topic_statistics::SubscriptionTopicStatistics >(node_topics->get_node_base_interface()->get_name(), publisher); - auto sub_call_back = [subscription_topic_stats]() { - subscription_topic_stats->publish_message(); + std::weak_ptr< + rclcpp::topic_statistics::SubscriptionTopicStatistics + > weak_subscription_topic_stats(subscription_topic_stats); + auto sub_call_back = [weak_subscription_topic_stats]() { + auto subscription_topic_stats = weak_subscription_topic_stats.lock(); + if (subscription_topic_stats) { + subscription_topic_stats->publish_message(); + } }; auto node_timer_interface = node_topics->get_node_timers_interface();