Skip to content

Commit 445386f

Browse files
author
随风而散
committed
fix bug by check if the pointer is nullptr before use and remove the shared pointer
1 parent c643f32 commit 445386f

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

nav2_dwb_controller/dwb_plugins/include/dwb_plugins/kinematic_parameters.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class KinematicsHandler
119119
using Ptr = std::shared_ptr<KinematicsHandler>;
120120

121121
protected:
122-
std::shared_ptr<KinematicParameters> kinematics_;
122+
std::atomic<KinematicParameters *> kinematics_;
123123

124124
// Subscription for parameter change
125125
rclcpp::AsyncParametersClient::SharedPtr parameters_client_;

nav2_dwb_controller/dwb_plugins/src/kinematic_parameters.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
*/
3434

3535
#include "dwb_plugins/kinematic_parameters.hpp"
36-
36+
#include <atomic>
3737
#include <memory>
3838
#include <string>
3939

@@ -50,7 +50,7 @@ namespace dwb_plugins
5050

5151
KinematicsHandler::KinematicsHandler()
5252
{
53-
kinematics_ = std::make_shared<KinematicParameters>();
53+
kinematics_.store(new KinematicParameters);
5454
}
5555

5656
KinematicsHandler::~KinematicsHandler()
@@ -185,7 +185,7 @@ KinematicsHandler::on_parameter_event_callback(
185185
update_kinematics(kinematics);
186186
}
187187

188-
void update_kinematics(KinematicParameters kinematics) {
188+
void KinematicsHandler::update_kinematics(KinematicParameters kinematics) {
189189
KinematicParameters* new_kinematics = new KinematicParameters(kinematics);
190190
KinematicParameters* old_kinematics = kinematics_.exchange(new_kinematics);
191191

0 commit comments

Comments
 (0)