From c6234b8acda93d8e7128ed8705c5a77b54e8bae7 Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Tue, 2 Apr 2024 22:40:20 -0700 Subject: [PATCH] use custom allocator from publisher option. Signed-off-by: Tomoya Fujita --- rclcpp/include/rclcpp/publisher.hpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/rclcpp/include/rclcpp/publisher.hpp b/rclcpp/include/rclcpp/publisher.hpp index c6f16643c6..3e21f936b9 100644 --- a/rclcpp/include/rclcpp/publisher.hpp +++ b/rclcpp/include/rclcpp/publisher.hpp @@ -320,7 +320,7 @@ class Publisher : public PublisherBase { if (!intra_process_is_enabled_) { // In this case we're not using intra process. - auto ros_msg_ptr = std::make_unique(); + auto ros_msg_ptr = create_ros_message_unique_ptr(); rclcpp::TypeAdapter::convert_to_ros_message(*msg, *ros_msg_ptr); this->do_inter_process_publish(*ros_msg_ptr); return; @@ -330,7 +330,8 @@ class Publisher : public PublisherBase get_subscription_count() > get_intra_process_subscription_count(); if (inter_process_publish_needed) { - auto ros_msg_ptr = std::make_shared(); + auto ros_msg_ptr = std::allocate_shared< + ROSMessageType, ROSMessageTypeAllocator>(ros_message_type_allocator_); rclcpp::TypeAdapter::convert_to_ros_message(*msg, *ros_msg_ptr); this->do_intra_process_publish(std::move(msg)); this->do_inter_process_publish(*ros_msg_ptr); @@ -339,7 +340,8 @@ class Publisher : public PublisherBase } } else { if (buffer_) { - auto ros_msg_ptr = std::make_shared(); + auto ros_msg_ptr = std::allocate_shared< + ROSMessageType, ROSMessageTypeAllocator>(ros_message_type_allocator_); rclcpp::TypeAdapter::convert_to_ros_message(*msg, *ros_msg_ptr); buffer_->add_shared(ros_msg_ptr); } @@ -367,7 +369,7 @@ class Publisher : public PublisherBase { if (!intra_process_is_enabled_) { // Convert to the ROS message equivalent and publish it. - auto ros_msg_ptr = std::make_unique(); + auto ros_msg_ptr = create_ros_message_unique_ptr(); rclcpp::TypeAdapter::convert_to_ros_message(msg, *ros_msg_ptr); this->do_inter_process_publish(*ros_msg_ptr); return;