From 5dc097b9bb68b6df0d66e861975f5ca97f657cfd Mon Sep 17 00:00:00 2001 From: Chen Lihui Date: Tue, 8 Sep 2020 22:39:39 +0800 Subject: [PATCH] calling fini functions to avoid memory leak (#791) * Fix test memory leaks 1. calling rcutils_string_map_fini to avoid memory leak 2. Fix memory leak that not to call rcutils_string_array_fini for enclaves 3. Fix that not to rcutils_string_array_fini for node_names_2 and node_namespaces_2 4. Fix that not to rcl_log_levels_fini for copied_log_levels 5. Fix that not to call rmw_security_options_fini for options 6. Call test_msgs__srv__BasicTypes_Request__fini for service_request in the end Signed-off-by: Chen Lihui --- rcl/test/rcl/test_expand_topic_name.cpp | 3 +++ rcl/test/rcl/test_get_node_names.cpp | 3 +++ rcl/test/rcl/test_graph.cpp | 4 ++++ rcl/test/rcl/test_security.cpp | 1 + rcl/test/rcl/test_service.cpp | 4 ++++ 5 files changed, 15 insertions(+) diff --git a/rcl/test/rcl/test_expand_topic_name.cpp b/rcl/test/rcl/test_expand_topic_name.cpp index 308fbed..8ec900a 100644 --- a/rcl/test/rcl/test_expand_topic_name.cpp +++ b/rcl/test/rcl/test_expand_topic_name.cpp @@ -226,6 +226,9 @@ TEST(test_expand_topic_name, internal_error) { EXPECT_TRUE(rcl_error_is_set()); rcl_reset_error(); } + + ret = rcutils_string_map_fini(&subs); + ASSERT_EQ(RCL_RET_OK, ret); } TEST(test_expand_topic_name, various_valid_topics) { diff --git a/rcl/test/rcl/test_get_node_names.cpp b/rcl/test/rcl/test_get_node_names.cpp index 734dc1d..80a0da4 100644 --- a/rcl/test/rcl/test_get_node_names.cpp +++ b/rcl/test/rcl/test_get_node_names.cpp @@ -279,6 +279,9 @@ TEST_F( ret = rcutils_string_array_fini(&node_namespaces); ASSERT_EQ(RCUTILS_RET_OK, ret); + ret = rcutils_string_array_fini(&enclaves); + ASSERT_EQ(RCUTILS_RET_OK, ret); + ret = rcl_node_fini(&node1); EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; diff --git a/rcl/test/rcl/test_graph.cpp b/rcl/test/rcl/test_graph.cpp index 6d8d83a..ad95b51 100644 --- a/rcl/test/rcl/test_graph.cpp +++ b/rcl/test/rcl/test_graph.cpp @@ -1435,6 +1435,10 @@ TEST_F(CLASSNAME(TestGraphFixture, RMW_IMPLEMENTATION), test_bad_get_node_names) EXPECT_EQ(RCUTILS_RET_OK, ret); ret = rcutils_string_array_fini(&node_namespaces); EXPECT_EQ(RCUTILS_RET_OK, ret); + ret = rcutils_string_array_fini(&node_names_2); + EXPECT_EQ(RCUTILS_RET_OK, ret); + ret = rcutils_string_array_fini(&node_namespaces_2); + EXPECT_EQ(RCUTILS_RET_OK, ret); ret = rcutils_string_array_fini(&node_enclaves); EXPECT_EQ(RCUTILS_RET_OK, ret); }); diff --git a/rcl/test/rcl/test_security.cpp b/rcl/test/rcl/test_security.cpp index cea6b00..688e37c 100644 --- a/rcl/test/rcl/test_security.cpp +++ b/rcl/test/rcl/test_security.cpp @@ -257,6 +257,7 @@ TEST_F(TestGetSecureRoot, test_get_security_options) { TEST_RESOURCES_DIRECTORY TEST_SECURITY_DIRECTORY_RESOURCES_DIR_NAME PATH_SEPARATOR "enclaves" PATH_SEPARATOR TEST_ENCLAVE, options.security_root_path); + EXPECT_EQ(RMW_RET_OK, rmw_security_options_fini(&options, &allocator)); } TEST_F(TestGetSecureRoot, test_rcl_security_enabled) { diff --git a/rcl/test/rcl/test_service.cpp b/rcl/test/rcl/test_service.cpp index 9ec820f..b4f6df6 100644 --- a/rcl/test/rcl/test_service.cpp +++ b/rcl/test/rcl/test_service.cpp @@ -537,6 +537,10 @@ TEST_F(CLASSNAME(TestServiceFixture, RMW_IMPLEMENTATION), test_fail_take_request test_msgs__srv__BasicTypes_Request service_request; test_msgs__srv__BasicTypes_Request__init(&service_request); + OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT( + { + test_msgs__srv__BasicTypes_Request__fini(&service_request); + }); rmw_service_info_t header; ret = rcl_take_request_with_info(nullptr, &header, &service_request);