Skip to content

Commit 042c536

Browse files
committed
rados_list_parallel.cc: cleanup before return from run()
Fix for another case of: CID 717112 (#1 of 1): Resource leak (RESOURCE_LEAK) leaked_storage: Variable io_ctx going out of scope leaks the storage it points to. Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
1 parent 3bba7ce commit 042c536

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

src/test/system/rados_list_parallel.cc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class RadosDeleteObjectsR : public SysTestRunnable
5858

5959
int run(void)
6060
{
61+
int ret_val = 0;
6162
rados_t cl;
6263
RETURN1_IF_NONZERO(rados_create(&cl, NULL));
6364
rados_conf_parse_argv(cl, m_argc, m_argv);
@@ -90,15 +91,17 @@ class RadosDeleteObjectsR : public SysTestRunnable
9091
for (int i = 0; i < r; ++i)
9192
++d;
9293
if (d == to_delete.end()) {
93-
return -EDOM;
94+
ret_val = -EDOM;
95+
goto out;
9496
}
9597
std::string oid(d->second);
9698
to_delete.erase(d);
9799
int ret = rados_remove(io_ctx, oid.c_str());
98100
if (ret != 0) {
99101
printf("%s: rados_remove(%s) failed with error %d\n",
100102
get_id_str(), oid.c_str(), ret);
101-
return ret;
103+
ret_val = ret;
104+
goto out;
102105
}
103106
++removed;
104107
if ((removed % 25) == 0) {
@@ -112,10 +115,11 @@ class RadosDeleteObjectsR : public SysTestRunnable
112115

113116
printf("%s: removed %d objects\n", get_id_str(), removed);
114117

118+
out:
115119
rados_ioctx_destroy(io_ctx);
116120
rados_shutdown(cl);
117121

118-
return 0;
122+
return ret_val;
119123
}
120124
private:
121125
std::string m_pool_name;

0 commit comments

Comments
 (0)