From 02cd91585df3bb229fbe399ba48562b8be5003d8 Mon Sep 17 00:00:00 2001 From: David Laseca Perez Date: Wed, 23 Sep 2026 09:17:01 +0200 Subject: [PATCH] Fix domain bug in rmw_init (#335) Signed-off-by: David Laseca Perez (cherry picked from commit a65078f459bde63bf15881f9ee12cdfb9df1fec5) --- rmw_microxrcedds_c/src/rmw_init.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rmw_microxrcedds_c/src/rmw_init.c b/rmw_microxrcedds_c/src/rmw_init.c index 8d5fd90c..332d1eda 100644 --- a/rmw_microxrcedds_c/src/rmw_init.c +++ b/rmw_microxrcedds_c/src/rmw_init.c @@ -53,7 +53,7 @@ rmw_init_options_init( init_options->implementation_identifier = eprosima_microxrcedds_identifier; init_options->allocator = allocator; init_options->enclave = NULL; - init_options->domain_id = 0; + init_options->domain_id = RMW_DEFAULT_DOMAIN_ID; init_options->security_options = rmw_get_default_security_options(); // This can be call before rmw_init() @@ -216,7 +216,8 @@ rmw_init( RMW_RET_INCORRECT_RMW_IMPLEMENTATION); context->instance_id = options->instance_id; context->implementation_identifier = eprosima_microxrcedds_identifier; - context->actual_domain_id = options->domain_id; + context->actual_domain_id = + (RMW_DEFAULT_DOMAIN_ID == options->domain_id) ? 0u : options->domain_id; #ifdef UCLIENT_PROFILE_MULTITHREAD if (!rmw_uxrce_wait_mutex_initialized) { @@ -377,6 +378,9 @@ rmw_context_fini( { rmw_ret_t ret = RMW_RET_OK; + // Safety net against leaks if the app shuts down without destroying its nodes + // Nodes destroyed here make a later rcl_node_fini() return RMW_RET_ERROR, this + // is normally triggered by rclc_support_fini() -> rcl_shutdown() -> rmw_shutdown() rmw_uxrce_mempool_item_t * item = node_memory.allocateditems; while (item != NULL) {