]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
st_rados_list_objects.cc: free resources in error case
authorDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Wed, 12 Nov 2014 11:00:32 +0000 (12:00 +0100)
committerDanny Al-Gaaf <danny.al-gaaf@bisect.de>
Thu, 13 Nov 2014 22:39:09 +0000 (23:39 +0100)
Fix for:

CID 1251453 (#2 of 2): Resource leak (RESOURCE_LEAK)
 leaked_storage: Variable io_ctx going out of scope leaks the
 storage it points to.

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

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

index 628fd510e913261b3c487f0ce214208923a61082..c53ab17ccb1b7e37ae04b3858ddf878d6254f0a0 100644 (file)
@@ -52,6 +52,7 @@ StRadosListObjects::
 int StRadosListObjects::
 run()
 {
+  int retval = 0;
   rados_t cl;
   RETURN1_IF_NONZERO(rados_create(&cl, NULL));
   rados_conf_parse_argv(cl, m_argc, m_argv);
@@ -79,7 +80,8 @@ run()
       if (m_accept_list_errors && (!m_midway_sem_post || saw > m_midway_cnt))
        break;
       printf("%s: rados_objects_list_next error: %d\n", get_id_str(), ret);
-      return ret;
+      retval = ret;
+      goto out;
     }
     if ((saw % 25) == 0) {
       printf("%s: listed object %d...\n", get_id_str(), saw);
@@ -92,12 +94,13 @@ run()
        m_midway_sem_post->post();
     }
   }
-  rados_nobjects_list_close(h);
 
   printf("%s: saw %d objects\n", get_id_str(), saw);
 
+out:
+  rados_nobjects_list_close(h);
   rados_ioctx_destroy(io_ctx);
   rados_shutdown(cl);
 
-  return 0;
+  return retval;
 }