@@ -27,6 +27,7 @@ extern "C"
2727#include "rcl/expand_topic_name.h"
2828#include "rcl/remap.h"
2929#include "rcutils/logging_macros.h"
30+ #include "rcutils/macros.h"
3031#include "rmw/error_handling.h"
3132#include "rmw/validate_full_topic_name.h"
3233#include "tracetools/tracetools.h"
@@ -50,6 +51,13 @@ rcl_publisher_init(
5051 const rcl_publisher_options_t * options
5152)
5253{
54+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_INVALID_ARGUMENT );
55+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_ALREADY_INIT );
56+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_NODE_INVALID );
57+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_BAD_ALLOC );
58+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_ERROR );
59+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_TOPIC_NAME_INVALID );
60+
5361 rcl_ret_t fail_ret = RCL_RET_ERROR ;
5462
5563 // Check options and allocator first, so allocator can be used with errors.
@@ -216,6 +224,11 @@ rcl_publisher_init(
216224rcl_ret_t
217225rcl_publisher_fini (rcl_publisher_t * publisher , rcl_node_t * node )
218226{
227+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_PUBLISHER_INVALID );
228+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_NODE_INVALID );
229+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_INVALID_ARGUMENT );
230+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_ERROR );
231+
219232 rcl_ret_t result = RCL_RET_OK ;
220233 RCL_CHECK_ARGUMENT_FOR_NULL (publisher , RCL_RET_PUBLISHER_INVALID );
221234 if (!rcl_node_is_valid_except_context (node )) {
@@ -286,6 +299,9 @@ rcl_publish(
286299 const void * ros_message ,
287300 rmw_publisher_allocation_t * allocation )
288301{
302+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_PUBLISHER_INVALID );
303+ RCUTILS_CAN_RETURN_WITH_ERROR_OF (RCL_RET_ERROR );
304+
289305 if (!rcl_publisher_is_valid (publisher )) {
290306 return RCL_RET_PUBLISHER_INVALID ; // error already set
291307 }
0 commit comments