@@ -191,7 +191,9 @@ class DomainBridgeImpl
191191 compressed_msg.data = domain_bridge::compress_message (cctx, std::move (*msg));
192192 rclcpp::SerializedMessage serialized_compressed_msg;
193193 serializer.serialize_message (&compressed_msg, &serialized_compressed_msg);
194- publisher->publish (serialized_compressed_msg.get_rcl_serialized_message ());
194+ auto serialized_data_ptr = std::make_shared<rcl_serialized_message_t >(
195+ serialized_compressed_msg.get_rcl_serialized_message ());
196+ publisher->publish (serialized_data_ptr);
195197 };
196198 break ;
197199 case DomainBridgeOptions::Mode::Decompress:
@@ -206,14 +208,18 @@ class DomainBridgeImpl
206208 serializer.deserialize_message (serialized_compressed_msg.get (), &compressed_msg);
207209 rclcpp::SerializedMessage msg = domain_bridge::decompress_message (
208210 dctx, std::move (compressed_msg.data ));
209- publisher->publish (msg.get_rcl_serialized_message ());
211+ auto serialized_data_ptr = std::make_shared<rcl_serialized_message_t >(
212+ msg.get_rcl_serialized_message ());
213+ publisher->publish (serialized_data_ptr);
210214 };
211215 break ;
212216 default : // fallthrough
213217 case DomainBridgeOptions::Mode::Normal:
214218 callback = [publisher](std::shared_ptr<rclcpp::SerializedMessage> msg) {
215219 // Publish message into the other domain
216- publisher->publish (msg->get_rcl_serialized_message ());
220+ auto serialized_data_ptr = std::make_shared<rcl_serialized_message_t >(
221+ msg->get_rcl_serialized_message ());
222+ publisher->publish (serialized_data_ptr);
217223 };
218224 break ;
219225 }
@@ -233,10 +239,7 @@ class DomainBridgeImpl
233239 *rosidl_typesupport_cpp::get_message_type_support_handle<domain_bridge::msg::CompressedMsg>(),
234240 topic_name,
235241 qos,
236- [publisher](std::shared_ptr<rclcpp::SerializedMessage> msg) {
237- // Publish message into the other domain
238- publisher->publish (msg->get_rcl_serialized_message ());
239- });
242+ callback);
240243 node->get_node_topics_interface ()->add_subscription (subscription, std::move (group));
241244 return subscription;
242245 }
0 commit comments