]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
test: Silence cppcheck memory leak warnings in ceph_test_rados_api_io
authorBrad Hubbard <bhubbard@redhat.com>
Tue, 11 Apr 2017 01:40:38 +0000 (11:40 +1000)
committerBrad Hubbard <bhubbard@redhat.com>
Tue, 11 Apr 2017 02:22:20 +0000 (12:22 +1000)
Signed-off-by: Brad Hubbard <bhubbard@redhat.com>
src/test/librados/io.cc

index d17c22be43c77f9ea63dd5267173a96757853227..f1a53642fa99da1101b3474e8e78a458a873303c 100644 (file)
@@ -5,6 +5,7 @@
 
 #include "include/rados/librados.h"
 #include "include/rados/librados.hpp"
+#include "include/scope_guard.h"
 #include "test/librados/test.h"
 #include "test/librados/TestCase.h"
 
@@ -826,6 +827,12 @@ TEST_F(LibRadosIoEC, OverlappingWriteRoundTrip) {
   char *buf = (char *)new char[dbsize];
   char *buf2 = (char *)new char[bsize];
   char *buf3 = (char *)new char[dbsize];
+  auto lam = [&] {
+            delete[] buf;
+            delete[] buf2;
+            delete[] buf3;
+          };
+  scope_guard<decltype(lam)> sg(std::forward<decltype(lam)>(lam));
   memset(buf, 0xcc, dbsize);
   ASSERT_EQ(0, rados_write(ioctx, "foo", buf, dbsize, 0));
   memset(buf2, 0xdd, bsize);
@@ -834,10 +841,6 @@ TEST_F(LibRadosIoEC, OverlappingWriteRoundTrip) {
   ASSERT_EQ(dbsize, rados_read(ioctx, "foo", buf3, dbsize, 0));
   // Read the same as first write
   ASSERT_EQ(0, memcmp(buf3, buf, dbsize));
-
-  delete[] buf;
-  delete[] buf2;
-  delete[] buf3;
 }
 
 TEST_F(LibRadosIoECPP, OverlappingWriteRoundTripPP) {
@@ -845,6 +848,11 @@ TEST_F(LibRadosIoECPP, OverlappingWriteRoundTripPP) {
   int dbsize = bsize * 2;
   char *buf = (char *)new char[dbsize];
   char *buf2 = (char *)new char[bsize];
+  auto lam = [&] {
+            delete[] buf;
+            delete[] buf2;
+          };
+  scope_guard<decltype(lam)> sg(std::forward<decltype(lam)>(lam));
   memset(buf, 0xcc, dbsize);
   bufferlist bl1;
   bl1.append(buf, dbsize);
@@ -857,9 +865,6 @@ TEST_F(LibRadosIoECPP, OverlappingWriteRoundTripPP) {
   ASSERT_EQ(dbsize, ioctx.read("foo", bl3, dbsize, 0));
   // Read the same as first write
   ASSERT_EQ(0, memcmp(bl3.c_str(), buf, dbsize));
-
-  delete[] buf;
-  delete[] buf2;
 }
 
 TEST_F(LibRadosIoEC, WriteFullRoundTrip) {
@@ -911,6 +916,15 @@ TEST_F(LibRadosIoEC, AppendRoundTrip) {
   char *buf = (char *)new char[alignment];
   char *buf2 = (char *)new char[alignment];
   char *buf3 = (char *)new char[alignment *2];
+  int uasize = alignment/2;
+  char *unalignedbuf = (char *)new char[uasize];
+  auto lam = [&] {
+            delete[] buf;
+            delete[] buf2;
+            delete[] buf3;
+            delete[] unalignedbuf;
+          };
+  scope_guard<decltype(lam)> sg(std::forward<decltype(lam)>(lam));
   memset(buf, 0xde, alignment);
   ASSERT_EQ(0, rados_append(ioctx, "foo", buf, alignment));
   memset(buf2, 0xad, alignment);
@@ -919,21 +933,19 @@ TEST_F(LibRadosIoEC, AppendRoundTrip) {
   ASSERT_EQ((int)alignment*2, rados_read(ioctx, "foo", buf3, alignment*2, 0));
   ASSERT_EQ(0, memcmp(buf3, buf, alignment));
   ASSERT_EQ(0, memcmp(buf3 + alignment, buf2, alignment));
-
-  int uasize = alignment/2;
-  char *unalignedbuf = (char *)new char[uasize];
+  memset(unalignedbuf, 0, uasize);
   ASSERT_EQ(0, rados_append(ioctx, "foo", unalignedbuf, uasize));
   ASSERT_EQ(-EOPNOTSUPP, rados_append(ioctx, "foo", unalignedbuf, uasize));
-
-  delete[] buf;
-  delete[] buf2;
-  delete[] buf3;
-  delete[] unalignedbuf;
 }
 
 TEST_F(LibRadosIoECPP, AppendRoundTripPP) {
   char *buf = (char *)new char[alignment];
   char *buf2 = (char *)new char[alignment];
+  auto lam = [&] {
+            delete[] buf;
+            delete[] buf2;
+          };
+  scope_guard<decltype(lam)> sg(std::forward<decltype(lam)>(lam));
   memset(buf, 0xde, alignment);
   bufferlist bl1;
   bl1.append(buf, alignment);
@@ -948,9 +960,6 @@ TEST_F(LibRadosIoECPP, AppendRoundTripPP) {
   const char *bl3_str = bl3.c_str();
   ASSERT_EQ(0, memcmp(bl3_str, buf, alignment));
   ASSERT_EQ(0, memcmp(bl3_str + alignment, buf2, alignment));
-
-  delete[] buf;
-  delete[] buf2;
 }
 
 TEST_F(LibRadosIoEC, TruncTest) {