From 8aa4a9d4b8dc9380a9b4f2b33fb555238c819567 Mon Sep 17 00:00:00 2001
From: Carl Delsey <carl.r.delsey@intel.com>
Date: Wed, 24 Oct 2018 08:18:44 -0700
Subject: [PATCH] Do not let shared ptr delete transform buffer

The transform buffer lifetime is part of the dwb controller. It
can't be managed by shared_ptr.
---
 nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp b/nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp
index 405a4bce..d47db8a0 100644
--- a/nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp
+++ b/nav2_controller/nav2_controller_dwb/src/dwb_controller.cpp
@@ -25,6 +25,8 @@ using nav2_tasks::TaskStatus;
 using dwb_core::DWBLocalPlanner;
 using dwb_core::CostmapROSPtr;
 
+#define NO_OP_DELETER [](auto){}
+
 namespace nav2_controller_dwb
 {
 
@@ -49,7 +51,7 @@ DwbController::execute(const nav2_tasks::FollowPathCommand::SharedPtr command)
   try {
     auto path = nav_2d_utils::pathToPath2D(*command);
     auto nh = shared_from_this();
-    planner_.initialize(nh, shared_ptr<tf2_ros::Buffer>(&tfBuffer_), cm_);
+    planner_.initialize(nh, shared_ptr<tf2_ros::Buffer>(&tfBuffer_, NO_OP_DELETER), cm_);
     planner_.setPlan(path);
     RCLCPP_INFO(get_logger(), "Initialized");
     while (true) {
-- 
GitLab