From b1af28047c26da0fe5723e3ea95ed1143bc224e5 Mon Sep 17 00:00:00 2001 From: Shane Loretz Date: Fri, 7 Sep 2018 17:28:10 -0700 Subject: [PATCH] Make sure timer is fini'd before clock (#553) * Make sure timer is fini'd before clock --- rclcpp/src/rclcpp/timer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rclcpp/src/rclcpp/timer.cpp b/rclcpp/src/rclcpp/timer.cpp index b38e2fe..9922beb 100644 --- a/rclcpp/src/rclcpp/timer.cpp +++ b/rclcpp/src/rclcpp/timer.cpp @@ -27,7 +27,7 @@ TimerBase::TimerBase(rclcpp::Clock::SharedPtr clock, std::chrono::nanoseconds pe clock_ = clock; timer_handle_ = std::shared_ptr( - new rcl_timer_t, [ = ](rcl_timer_t * timer) + new rcl_timer_t, [ = ](rcl_timer_t * timer) mutable { if (rcl_timer_fini(timer) != RCL_RET_OK) { RCUTILS_LOG_ERROR_NAMED( @@ -36,6 +36,8 @@ TimerBase::TimerBase(rclcpp::Clock::SharedPtr clock, std::chrono::nanoseconds pe rcl_reset_error(); } delete timer; + // Captured shared pointer by copy, reset to make sure timer is finalized before clock + clock.reset(); }); *timer_handle_.get() = rcl_get_zero_initialized_timer();