diff --git a/rcl/src/rcl/logging_rosout.c b/rcl/src/rcl/logging_rosout.c index 1a819a4ad..543183c09 100644 --- a/rcl/src/rcl/logging_rosout.c +++ b/rcl/src/rcl/logging_rosout.c @@ -116,10 +116,11 @@ rcl_ret_t rcl_logging_rosout_fini() status = rcl_publisher_fini(&entry.publisher, entry.node); if (RCL_RET_OK == status) { - const char * prev_key = key; - hashmap_ret = rcutils_hash_map_get_next_key_and_data(&__logger_map, NULL, &key, &entry); + RCL_RET_FROM_RCUTIL_RET(status, rcutils_hash_map_unset(&__logger_map, &key)); + } - RCL_RET_FROM_RCUTIL_RET(status, rcutils_hash_map_unset(&__logger_map, &prev_key)); + if (RCL_RET_OK == status) { + hashmap_ret = rcutils_hash_map_get_next_key_and_data(&__logger_map, NULL, &key, &entry); } } if (RCUTILS_RET_HASH_MAP_NO_MORE_ENTRIES != hashmap_ret) {