From eb189fb3ffe0b77cb3226e4af9451277cd975066 Mon Sep 17 00:00:00 2001 From: WideAwakeTN <30844488+WideAwakeTN@users.noreply.github.com> Date: Fri, 18 Mar 2022 20:52:52 +0100 Subject: [PATCH] Removed some heap interactions in rmw_serialize.cpp (#590) Signed-off-by: Martin Mayer --- rmw_fastrtps_cpp/src/rmw_serialize.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/rmw_fastrtps_cpp/src/rmw_serialize.cpp b/rmw_fastrtps_cpp/src/rmw_serialize.cpp index a6a0e2ae8..8689e69c5 100644 --- a/rmw_fastrtps_cpp/src/rmw_serialize.cpp +++ b/rmw_fastrtps_cpp/src/rmw_serialize.cpp @@ -40,8 +40,8 @@ rmw_serialize( } auto callbacks = static_cast(ts->data); - auto tss = new MessageTypeSupport_cpp(callbacks); - auto data_length = tss->getEstimatedSerializedSize(ros_message, callbacks); + auto tss = MessageTypeSupport_cpp(callbacks); + auto data_length = tss.getEstimatedSerializedSize(ros_message, callbacks); if (serialized_message->buffer_capacity < data_length) { if (rmw_serialized_message_resize(serialized_message, data_length) != RMW_RET_OK) { RMW_SET_ERROR_MSG("unable to dynamically resize serialized message"); @@ -54,10 +54,9 @@ rmw_serialize( eprosima::fastcdr::Cdr ser( buffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, eprosima::fastcdr::Cdr::DDS_CDR); - auto ret = tss->serializeROSmessage(ros_message, ser, callbacks); + auto ret = tss.serializeROSmessage(ros_message, ser, callbacks); serialized_message->buffer_length = data_length; serialized_message->buffer_capacity = data_length; - delete tss; return ret == true ? RMW_RET_OK : RMW_RET_ERROR; } @@ -79,14 +78,13 @@ rmw_deserialize( } auto callbacks = static_cast(ts->data); - auto tss = new MessageTypeSupport_cpp(callbacks); + auto tss = MessageTypeSupport_cpp(callbacks); eprosima::fastcdr::FastBuffer buffer( reinterpret_cast(serialized_message->buffer), serialized_message->buffer_length); eprosima::fastcdr::Cdr deser(buffer, eprosima::fastcdr::Cdr::DEFAULT_ENDIAN, eprosima::fastcdr::Cdr::DDS_CDR); - auto ret = tss->deserializeROSmessage(deser, ros_message, callbacks); - delete tss; + auto ret = tss.deserializeROSmessage(deser, ros_message, callbacks); return ret == true ? RMW_RET_OK : RMW_RET_ERROR; }