From e3ac684d474e9fe0f9fcedcf4dc04553edeecdae Mon Sep 17 00:00:00 2001 From: Chen Lihui Date: Thu, 18 Aug 2022 12:30:51 +0800 Subject: [PATCH] fix memory leak (#1994) Signed-off-by: Chen Lihui --- rclcpp/src/rclcpp/parameter_map.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rclcpp/src/rclcpp/parameter_map.cpp b/rclcpp/src/rclcpp/parameter_map.cpp index e5e3da019c..bc3a1f0ab4 100644 --- a/rclcpp/src/rclcpp/parameter_map.cpp +++ b/rclcpp/src/rclcpp/parameter_map.cpp @@ -15,6 +15,8 @@ #include #include +#include "rcpputils/find_and_replace.hpp" +#include "rcpputils/scope_exit.hpp" #include "rclcpp/parameter_map.hpp" using rclcpp::exceptions::InvalidParametersException; @@ -132,9 +134,11 @@ rclcpp::parameter_map_from_yaml_file(const std::string & yaml_filename) { rcutils_allocator_t allocator = rcutils_get_default_allocator(); rcl_params_t * rcl_parameters = rcl_yaml_node_struct_init(allocator); + RCPPUTILS_SCOPE_EXIT(rcl_yaml_node_struct_fini(rcl_parameters); ); const char * path = yaml_filename.c_str(); if (!rcl_parse_yaml_file(path, rcl_parameters)) { rclcpp::exceptions::throw_from_rcl_error(RCL_RET_ERROR); } + return rclcpp::parameter_map_from(rcl_parameters); }