]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test/librados/aio.cc: silence coverity with scope_guard 17431/head
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Tue, 30 May 2017 10:31:19 +0000 (12:31 +0200)
committerKefu Chai <kchai@redhat.com>
Sat, 2 Sep 2017 04:27:16 +0000 (12:27 +0800)
Fix for:

CID 1313405 (#1 of 1): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable my_completion2 going out of scope
 leaks the storage it points to.

CID 1219522 (#1 of 1): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable my_completion going out of scope
 leaks the storage it points to.

CID 1219501 (#1 of 1): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable my_completion going out of scope
 leaks the storage it points to.

CID 1313406 (#1 of 1): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable my_completion2 going out of scope
 leaks the storage it points to.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
src/test/librados/aio.cc

index d795b84683fc50d2a50b37e3a3f7bd50b2e3f26f..23b9bba109beeb71413eb1fa1f43f3401b2a2d4d 100644 (file)
@@ -4,6 +4,7 @@
 #include "test/librados/test.h"
 #include "include/types.h"
 #include "include/stringify.h"
+#include "include/scope_guard.h"
 
 #include "gtest/gtest.h"
 #include <errno.h>
@@ -257,6 +258,7 @@ TEST(LibRadosAio, SimpleWrite) {
   ASSERT_EQ("", test_data.init());
   ASSERT_EQ(0, rados_aio_create_completion((void*)&test_data,
              set_completion_complete, set_completion_safe, &my_completion));
+  auto sg = make_scope_guard([&] { rados_aio_release(my_completion); });
   char buf[128];
   memset(buf, 0xcc, sizeof(buf));
   ASSERT_EQ(0, rados_aio_write(test_data.m_ioctx, "foo",
@@ -272,6 +274,7 @@ TEST(LibRadosAio, SimpleWrite) {
   rados_completion_t my_completion2;
   ASSERT_EQ(0, rados_aio_create_completion((void*)&test_data,
              set_completion_complete, set_completion_safe, &my_completion2));
+  auto sg2 = make_scope_guard([&] { rados_aio_release(my_completion2); });
   ASSERT_EQ(0, rados_aio_write(test_data.m_ioctx, "foo",
                               my_completion2, buf, sizeof(buf), 0));
   {
@@ -280,8 +283,6 @@ TEST(LibRadosAio, SimpleWrite) {
     sem_wait(test_data.m_sem);
   }
   ASSERT_EQ(0, rados_aio_get_return_value(my_completion2));
-  rados_aio_release(my_completion);
-  rados_aio_release(my_completion2);
 }
 
 TEST(LibRadosAio, SimpleWritePP) {
@@ -2613,6 +2614,7 @@ TEST(LibRadosAioEC, SimpleWrite) {
   ASSERT_EQ("", test_data.init());
   ASSERT_EQ(0, rados_aio_create_completion((void*)&test_data,
              set_completion_completeEC, set_completion_safeEC, &my_completion));
+  auto sg = make_scope_guard([&] { rados_aio_release(my_completion); });
   char buf[128];
   memset(buf, 0xcc, sizeof(buf));
   ASSERT_EQ(0, rados_aio_write(test_data.m_ioctx, "foo",
@@ -2628,6 +2630,7 @@ TEST(LibRadosAioEC, SimpleWrite) {
   rados_completion_t my_completion2;
   ASSERT_EQ(0, rados_aio_create_completion((void*)&test_data,
              set_completion_completeEC, set_completion_safeEC, &my_completion2));
+  auto sg2 = make_scope_guard([&] { rados_aio_release(my_completion2); });
   ASSERT_EQ(0, rados_aio_write(test_data.m_ioctx, "foo",
                               my_completion2, buf, sizeof(buf), 0));
   {
@@ -2636,8 +2639,6 @@ TEST(LibRadosAioEC, SimpleWrite) {
     sem_wait(test_data.m_sem);
   }
   ASSERT_EQ(0, rados_aio_get_return_value(my_completion2));
-  rados_aio_release(my_completion);
-  rados_aio_release(my_completion2);
 }
 
 TEST(LibRadosAioEC, SimpleWritePP) {