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")
This commit is contained in:
parent
e5836eb692
commit
f606bb9baf
1 changed files with 3 additions and 4 deletions
|
@ -15,11 +15,11 @@
|
||||||
|
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
#include <boost/scoped_ptr.hpp>
|
||||||
#include <boost/thread.hpp>
|
#include <boost/thread.hpp>
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
using namespace boost;
|
using namespace boost;
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
static uint64_t nAccountingEntryNumber = 0;
|
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());
|
LogPrintf("Salvage(aggressive) found %u records\n", salvagedData.size());
|
||||||
|
|
||||||
bool fSuccess = allOK;
|
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
|
int ret = pdbCopy->open(NULL, // Txn pointer
|
||||||
filename.c_str(), // Filename
|
filename.c_str(), // Filename
|
||||||
"main", // Logical db name
|
"main", // Logical db name
|
||||||
|
@ -967,7 +967,6 @@ bool CWalletDB::Recover(CDBEnv& dbenv, std::string filename, bool fOnlyKeys)
|
||||||
}
|
}
|
||||||
ptxn->commit(0);
|
ptxn->commit(0);
|
||||||
pdbCopy->close(0);
|
pdbCopy->close(0);
|
||||||
delete pdbCopy;
|
|
||||||
|
|
||||||
return fSuccess;
|
return fSuccess;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue