From f0ba80756d1c3c313014ad7be18191981fb545be Mon Sep 17 00:00:00 2001 From: Danny Al-Gaaf Date: Fri, 8 Feb 2013 17:14:19 +0100 Subject: [PATCH] SyntheticClient.cc: fix some memory leaks in the error handling Fix some memory leaks in case of error handling due to failed client->open() calls. Error from cppcheck was: [src/client/SyntheticClient.cc:1980]: (error) Memory leak: buf [src/client/SyntheticClient.cc:2040]: (error) Memory leak: buf [src/client/SyntheticClient.cc:2090]: (error) Memory leak: buf --- src/client/SyntheticClient.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/client/SyntheticClient.cc b/src/client/SyntheticClient.cc index b2a936f55ac87..30e31072f2bf7 100644 --- a/src/client/SyntheticClient.cc +++ b/src/client/SyntheticClient.cc @@ -1977,7 +1977,10 @@ int SyntheticClient::write_file(string& fn, int size, loff_t wrsize) // size i int fd = client->open(fn.c_str(), O_RDWR|O_CREAT); dout(5) << "writing to " << fn << " fd " << fd << dendl; - if (fd < 0) return fd; + if (fd < 0) { + delete[] buf; + return fd; + } utime_t from = ceph_clock_now(g_ceph_context); utime_t start = from; @@ -2037,7 +2040,10 @@ int SyntheticClient::write_fd(int fd, int size, int wrsize) // size is in MB, uint64_t chunks = (uint64_t)size * (uint64_t)(1024*1024) / (uint64_t)wrsize; //dout(5) << "SyntheticClient::write_fd: writing to fd " << fd << dendl; - if (fd < 0) return fd; + if (fd < 0) { + delete[] buf; + return fd; + } for (unsigned i=0; iopen(fn.c_str(), O_RDONLY); dout(5) << "reading from " << fn << " fd " << fd << dendl; - if (fd < 0) return fd; + if (fd < 0) { + delete[] buf; + return fd; + } utime_t from = ceph_clock_now(g_ceph_context); utime_t start = from; -- 2.39.5