diff options
author | Philip Kaufmann <phil.kaufmann@t-online.de> | 2014-09-28 16:09:19 +0200 |
---|---|---|
committer | Philip Kaufmann <phil.kaufmann@t-online.de> | 2014-10-01 08:48:22 +0200 |
commit | f606bb9bafafb12bcf9bc0834125c884da97f9e1 (patch) | |
tree | b1152359cd226b215eacbec8575f624648c8b66f /src | |
parent | e5836eb6923b8142003915fc02f2f0b4dc7731c1 (diff) |
fix a possible memory leak in CWalletDB::Recover
- convert pdbCopy into a boost::scoped_ptr to ensure memory gets freed
in all cases (e.g. after "ret > 0")
Diffstat (limited to 'src')
-rw-r--r-- | src/walletdb.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/walletdb.cpp b/src/walletdb.cpp index a84f44db01..e13830a8f4 100644 --- a/src/walletdb.cpp +++ b/src/walletdb.cpp @@ -15,11 +15,11 @@ #include <boost/filesystem.hpp> #include <boost/foreach.hpp> +#include <boost/scoped_ptr.hpp> #include <boost/thread.hpp> -using namespace std; using namespace boost; - +using namespace std; static uint64_t nAccountingEntryNumber = 0; @@ -926,7 +926,7 @@ bool CWalletDB::Recover(CDBEnv& dbenv, std::string filename, bool fOnlyKeys) LogPrintf("Salvage(aggressive) found %u records\n", salvagedData.size()); bool fSuccess = allOK; - Db* pdbCopy = new Db(&dbenv.dbenv, 0); + boost::scoped_ptr<Db> pdbCopy(new Db(&dbenv.dbenv, 0)); int ret = pdbCopy->open(NULL, // Txn pointer filename.c_str(), // Filename "main", // Logical db name @@ -967,7 +967,6 @@ bool CWalletDB::Recover(CDBEnv& dbenv, std::string filename, bool fOnlyKeys) } ptxn->commit(0); pdbCopy->close(0); - delete pdbCopy; return fSuccess; } |