[rcl] Return appropriate error code when there is a bad allocation

This commit is contained in:
Jacob Perron 2018-11-05 15:06:01 -08:00
parent 48c168a5ca
commit e6985c0226
2 changed files with 14 additions and 8 deletions

View file

@ -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(

View file

@ -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;