Skip to content

Commit

Permalink
Parameters fini memory (#253) (#261)
Browse files Browse the repository at this point in the history
* Parameters fini memory

Signed-off-by: Pablo Garrido <[email protected]>

* Uncrustify

Signed-off-by: Pablo Garrido <[email protected]>

* Update

Signed-off-by: Pablo Garrido <[email protected]>

* Add fini test

Signed-off-by: Pablo Garrido <[email protected]>

* Add fini test

Signed-off-by: Pablo Garrido <[email protected]>

* Fix destruction

Signed-off-by: Pablo Garrido <[email protected]>
(cherry picked from commit 3e5e219)

Co-authored-by: Pablo Garrido <[email protected]>
  • Loading branch information
mergify[bot] and pablogs9 authored Mar 4, 2022
1 parent d6ed904 commit d5ca470
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
55 changes: 55 additions & 0 deletions rclc_parameter/src/rclc_parameter/parameter_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,61 @@ rclc_parameter_server_fini(
ret &= rcl_publisher_fini(&parameter_server->event_publisher, node);
}

rosidl_runtime_c__String__fini(&parameter_server->event_list.node);

for (size_t i = 0; i < parameter_server->describe_request.names.capacity; i++) {
rosidl_runtime_c__String__fini(&parameter_server->describe_request.names.data[i]);
rosidl_runtime_c__String__fini(&parameter_server->describe_response.descriptors.data[i].name);
}

rcl_interfaces__msg__ParameterDescriptor__Sequence__fini(
&parameter_server->describe_response.descriptors);
rosidl_runtime_c__String__Sequence__fini(&parameter_server->describe_request.names);
rcl_interfaces__srv__DescribeParameters_Response__fini(&parameter_server->describe_response);
rcl_interfaces__srv__DescribeParameters_Request__fini(&parameter_server->describe_request);

for (size_t i = 0; i < parameter_server->get_types_request.names.capacity; i++) {
rosidl_runtime_c__String__fini(&parameter_server->get_types_request.names.data[i]);
}

rosidl_runtime_c__uint8__Sequence__fini(&parameter_server->get_types_response.types);
rosidl_runtime_c__String__Sequence__fini(&parameter_server->get_types_request.names);
rcl_interfaces__srv__GetParameterTypes_Response__fini(&parameter_server->get_types_response);
rcl_interfaces__srv__GetParameterTypes_Request__fini(&parameter_server->get_types_request);

for (size_t i = 0; i < parameter_server->set_request.parameters.capacity; i++) {
rosidl_runtime_c__String__fini(&parameter_server->set_request.parameters.data[i].name);
rosidl_runtime_c__String__fini(&parameter_server->set_response.results.data[i].reason);
}

rcl_interfaces__msg__SetParametersResult__Sequence__fini(&parameter_server->set_response.results);
rcl_interfaces__msg__Parameter__Sequence__fini(&parameter_server->set_request.parameters);
rcl_interfaces__srv__SetParameters_Response__fini(&parameter_server->set_response);
rcl_interfaces__srv__SetParameters_Request__fini(&parameter_server->set_request);

for (size_t i = 0; i < parameter_server->get_request.names.capacity; i++) {
rosidl_runtime_c__String__fini(&parameter_server->get_request.names.data[i]);
}

rcl_interfaces__msg__ParameterValue__Sequence__fini(&parameter_server->get_response.values);
rosidl_runtime_c__String__Sequence__fini(&parameter_server->get_request.names);
rcl_interfaces__srv__GetParameters_Response__fini(&parameter_server->get_response);
rcl_interfaces__srv__GetParameters_Request__fini(&parameter_server->get_request);

for (size_t i = 0; i < parameter_server->list_response.result.names.capacity; i++) {
rosidl_runtime_c__String__fini(&parameter_server->list_response.result.names.data[i]);
}

rosidl_runtime_c__String__Sequence__fini(&parameter_server->list_response.result.names);
rcl_interfaces__srv__ListParameters_Response__fini(&parameter_server->list_response);
rcl_interfaces__srv__ListParameters_Request__fini(&parameter_server->list_request);

for (size_t i = 0; i < parameter_server->parameter_list.capacity; i++) {
rosidl_runtime_c__String__fini(&parameter_server->parameter_list.data[i].name);
}

rcl_interfaces__msg__Parameter__Sequence__fini(&parameter_server->parameter_list);

return ret;
}

Expand Down
3 changes: 3 additions & 0 deletions rclc_parameter/test/rclc_parameter/test_parameter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,4 +253,7 @@ TEST(Test, rclc_node_init_default) {

spin = false;
rclc_parameter_server_thread.join();

// Destroy parameter server
ASSERT_EQ(rclc_parameter_server_fini(&param_server, &node), RCL_RET_OK);
}

0 comments on commit d5ca470

Please sign in to comment.