From e6985c0226174b6f478cf4c4ffae2adcf8c41e58 Mon Sep 17 00:00:00 2001 From: Jacob Perron Date: Mon, 5 Nov 2018 15:06:01 -0800 Subject: [PATCH] [rcl] Return appropriate error code when there is a bad allocation --- rcl/src/rcl/service.c | 13 ++++++++----- rcl/src/rcl/subscription.c | 9 ++++++--- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/rcl/src/rcl/service.c b/rcl/src/rcl/service.c index 34d131f..9632862 100644 --- a/rcl/src/rcl/service.c +++ b/rcl/src/rcl/service.c @@ -76,7 +76,7 @@ rcl_service_init( rcutils_ret_t rcutils_ret = rcutils_string_map_init(&substitutions_map, 0, rcutils_allocator); if (rcutils_ret != RCUTILS_RET_OK) { RCL_SET_ERROR_MSG(rcutils_get_error_string().str); - if (rcutils_ret == RCUTILS_RET_BAD_ALLOC) { + if (RCUTILS_RET_BAD_ALLOC == rcutils_ret) { return RCL_RET_BAD_ALLOC; } return RCL_RET_ERROR; @@ -91,7 +91,7 @@ rcl_service_init( rcutils_ret, rcutils_get_error_string().str); } - if (ret == RCL_RET_BAD_ALLOC) { + if (RCL_RET_BAD_ALLOC == ret) { return ret; } return RCL_RET_ERROR; @@ -284,10 +284,13 @@ rcl_take_request( RCL_CHECK_FOR_NULL_WITH_MSG(options, "Failed to get service options", return RCL_RET_ERROR); bool taken = false; - if (rmw_take_request( - service->impl->rmw_handle, request_header, ros_request, &taken) != RMW_RET_OK) - { + rmw_ret_t ret = rmw_take_request( + service->impl->rmw_handle, request_header, ros_request, &taken); + if (RMW_RET_OK != ret) { RCL_SET_ERROR_MSG(rmw_get_error_string().str); + if (RMW_RET_BAD_ALLOC == ret) { + return RCL_RET_BAD_ALLOC; + } return RCL_RET_ERROR; } RCUTILS_LOG_DEBUG_NAMED( diff --git a/rcl/src/rcl/subscription.c b/rcl/src/rcl/subscription.c index fcbe954..4c337d1 100644 --- a/rcl/src/rcl/subscription.c +++ b/rcl/src/rcl/subscription.c @@ -74,7 +74,7 @@ rcl_subscription_init( rcutils_ret_t rcutils_ret = rcutils_string_map_init(&substitutions_map, 0, rcutils_allocator); if (rcutils_ret != RCUTILS_RET_OK) { RCL_SET_ERROR_MSG(rcutils_get_error_string().str); - if (rcutils_ret == RCUTILS_RET_BAD_ALLOC) { + if (RCUTILS_RET_BAD_ALLOC == rcutils_ret) { return RCL_RET_BAD_ALLOC; } return RCL_RET_ERROR; @@ -89,7 +89,7 @@ rcl_subscription_init( rcutils_ret, rcutils_get_error_string().str); } - if (ret == RCL_RET_BAD_ALLOC) { + if (RCL_RET_BAD_ALLOC == ret) { return ret; } return RCL_RET_ERROR; @@ -251,6 +251,9 @@ rcl_take( rmw_take_with_info(subscription->impl->rmw_handle, ros_message, &taken, message_info_local); if (ret != RMW_RET_OK) { RCL_SET_ERROR_MSG(rmw_get_error_string().str); + if (RMW_RET_BAD_ALLOC == ret) { + return RCL_RET_BAD_ALLOC; + } return RCL_RET_ERROR; } RCUTILS_LOG_DEBUG_NAMED( @@ -281,7 +284,7 @@ rcl_take_serialized_message( subscription->impl->rmw_handle, serialized_message, &taken, message_info_local); if (ret != RMW_RET_OK) { RCL_SET_ERROR_MSG(rmw_get_error_string().str); - if (ret == RMW_RET_BAD_ALLOC) { + if (RMW_RET_BAD_ALLOC == ret) { return RCL_RET_BAD_ALLOC; } return RCL_RET_ERROR;