[rcl] Return appropriate error code when there is a bad allocation
This commit is contained in:
parent
48c168a5ca
commit
e6985c0226
2 changed files with 14 additions and 8 deletions
|
@ -76,7 +76,7 @@ rcl_service_init(
|
||||||
rcutils_ret_t rcutils_ret = rcutils_string_map_init(&substitutions_map, 0, rcutils_allocator);
|
rcutils_ret_t rcutils_ret = rcutils_string_map_init(&substitutions_map, 0, rcutils_allocator);
|
||||||
if (rcutils_ret != RCUTILS_RET_OK) {
|
if (rcutils_ret != RCUTILS_RET_OK) {
|
||||||
RCL_SET_ERROR_MSG(rcutils_get_error_string().str);
|
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_BAD_ALLOC;
|
||||||
}
|
}
|
||||||
return RCL_RET_ERROR;
|
return RCL_RET_ERROR;
|
||||||
|
@ -91,7 +91,7 @@ rcl_service_init(
|
||||||
rcutils_ret,
|
rcutils_ret,
|
||||||
rcutils_get_error_string().str);
|
rcutils_get_error_string().str);
|
||||||
}
|
}
|
||||||
if (ret == RCL_RET_BAD_ALLOC) {
|
if (RCL_RET_BAD_ALLOC == ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return RCL_RET_ERROR;
|
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);
|
RCL_CHECK_FOR_NULL_WITH_MSG(options, "Failed to get service options", return RCL_RET_ERROR);
|
||||||
|
|
||||||
bool taken = false;
|
bool taken = false;
|
||||||
if (rmw_take_request(
|
rmw_ret_t ret = rmw_take_request(
|
||||||
service->impl->rmw_handle, request_header, ros_request, &taken) != RMW_RET_OK)
|
service->impl->rmw_handle, request_header, ros_request, &taken);
|
||||||
{
|
if (RMW_RET_OK != ret) {
|
||||||
RCL_SET_ERROR_MSG(rmw_get_error_string().str);
|
RCL_SET_ERROR_MSG(rmw_get_error_string().str);
|
||||||
|
if (RMW_RET_BAD_ALLOC == ret) {
|
||||||
|
return RCL_RET_BAD_ALLOC;
|
||||||
|
}
|
||||||
return RCL_RET_ERROR;
|
return RCL_RET_ERROR;
|
||||||
}
|
}
|
||||||
RCUTILS_LOG_DEBUG_NAMED(
|
RCUTILS_LOG_DEBUG_NAMED(
|
||||||
|
|
|
@ -74,7 +74,7 @@ rcl_subscription_init(
|
||||||
rcutils_ret_t rcutils_ret = rcutils_string_map_init(&substitutions_map, 0, rcutils_allocator);
|
rcutils_ret_t rcutils_ret = rcutils_string_map_init(&substitutions_map, 0, rcutils_allocator);
|
||||||
if (rcutils_ret != RCUTILS_RET_OK) {
|
if (rcutils_ret != RCUTILS_RET_OK) {
|
||||||
RCL_SET_ERROR_MSG(rcutils_get_error_string().str);
|
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_BAD_ALLOC;
|
||||||
}
|
}
|
||||||
return RCL_RET_ERROR;
|
return RCL_RET_ERROR;
|
||||||
|
@ -89,7 +89,7 @@ rcl_subscription_init(
|
||||||
rcutils_ret,
|
rcutils_ret,
|
||||||
rcutils_get_error_string().str);
|
rcutils_get_error_string().str);
|
||||||
}
|
}
|
||||||
if (ret == RCL_RET_BAD_ALLOC) {
|
if (RCL_RET_BAD_ALLOC == ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return RCL_RET_ERROR;
|
return RCL_RET_ERROR;
|
||||||
|
@ -251,6 +251,9 @@ rcl_take(
|
||||||
rmw_take_with_info(subscription->impl->rmw_handle, ros_message, &taken, message_info_local);
|
rmw_take_with_info(subscription->impl->rmw_handle, ros_message, &taken, message_info_local);
|
||||||
if (ret != RMW_RET_OK) {
|
if (ret != RMW_RET_OK) {
|
||||||
RCL_SET_ERROR_MSG(rmw_get_error_string().str);
|
RCL_SET_ERROR_MSG(rmw_get_error_string().str);
|
||||||
|
if (RMW_RET_BAD_ALLOC == ret) {
|
||||||
|
return RCL_RET_BAD_ALLOC;
|
||||||
|
}
|
||||||
return RCL_RET_ERROR;
|
return RCL_RET_ERROR;
|
||||||
}
|
}
|
||||||
RCUTILS_LOG_DEBUG_NAMED(
|
RCUTILS_LOG_DEBUG_NAMED(
|
||||||
|
@ -281,7 +284,7 @@ rcl_take_serialized_message(
|
||||||
subscription->impl->rmw_handle, serialized_message, &taken, message_info_local);
|
subscription->impl->rmw_handle, serialized_message, &taken, message_info_local);
|
||||||
if (ret != RMW_RET_OK) {
|
if (ret != RMW_RET_OK) {
|
||||||
RCL_SET_ERROR_MSG(rmw_get_error_string().str);
|
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_BAD_ALLOC;
|
||||||
}
|
}
|
||||||
return RCL_RET_ERROR;
|
return RCL_RET_ERROR;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue