From 7e6642a1200e69969b3300d8169f278cf6f239cd Mon Sep 17 00:00:00 2001 From: Tomoya Fujita Date: Thu, 19 Feb 2026 10:20:44 +0900 Subject: [PATCH] use string comparison to implementation_identifier, not by addresses. Signed-off-by: Tomoya Fujita --- .../rclcpp/experimental/intra_process_manager.hpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rclcpp/include/rclcpp/experimental/intra_process_manager.hpp b/rclcpp/include/rclcpp/experimental/intra_process_manager.hpp index 3b3e846c24..9ea2c3f6b1 100644 --- a/rclcpp/include/rclcpp/experimental/intra_process_manager.hpp +++ b/rclcpp/include/rclcpp/experimental/intra_process_manager.hpp @@ -19,6 +19,7 @@ #include +#include #include #include #include @@ -408,8 +409,12 @@ class IntraProcessManager { bool operator()(const rmw_gid_t & lhs, const rmw_gid_t & rhs) const noexcept { - // Compare implementation identifier first for fast rejection - if (lhs.implementation_identifier != rhs.implementation_identifier) { + // Compare implementation identifier string content first for fast rejection + if (lhs.implementation_identifier == nullptr || rhs.implementation_identifier == nullptr) { + return lhs.implementation_identifier == rhs.implementation_identifier && + std::equal(std::begin(lhs.data), std::end(lhs.data), std::begin(rhs.data)); + } + if (std::strcmp(lhs.implementation_identifier, rhs.implementation_identifier) != 0) { return false; } // Compare the data bytes