From 8e501cde1038de7e111e3128782e8723a72465f5 Mon Sep 17 00:00:00 2001 From: Morgan Quigley Date: Fri, 25 Mar 2016 15:12:21 -0700 Subject: [PATCH] Avoid memory leak; setName makes its own copy of the string. --- rmw_fastrtps_cpp/src/MessageTypeSupport.cpp | 2 +- rmw_fastrtps_cpp/src/functions.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/rmw_fastrtps_cpp/src/MessageTypeSupport.cpp b/rmw_fastrtps_cpp/src/MessageTypeSupport.cpp index 2d37903cb..34185ea7a 100644 --- a/rmw_fastrtps_cpp/src/MessageTypeSupport.cpp +++ b/rmw_fastrtps_cpp/src/MessageTypeSupport.cpp @@ -18,7 +18,7 @@ MessageTypeSupport::MessageTypeSupport(const rosidl_typesupport_introspection_cp typeTooLarge_ = true; std::string name = std::string(members->package_name_) + "::msg::dds_::" + members->message_name_ + "_"; - setName(strdup(name.c_str())); + setName(name.c_str()); if(members->member_count_ != 0) m_typeSize = calculateMaxSerializedSize(members, 0); diff --git a/rmw_fastrtps_cpp/src/functions.cpp b/rmw_fastrtps_cpp/src/functions.cpp index 75ad0d601..a06674d94 100644 --- a/rmw_fastrtps_cpp/src/functions.cpp +++ b/rmw_fastrtps_cpp/src/functions.cpp @@ -300,6 +300,7 @@ extern "C" static_cast(malloc(sizeof(char) * strlen(name) + 1)); if (!node_handle->name) { RMW_SET_ERROR_MSG("failed to allocate memory"); + free(node_handle); return NULL; } memcpy(const_cast(node_handle->name), name, strlen(name) + 1);