Browse Source

Use unique_ptr for pdbCopy (Db) and fix potential memory leak

0.16
practicalswift 7 years ago
parent
commit
b45c597caa
  1. 3
      src/wallet/db.cpp

3
src/wallet/db.cpp

@ -522,7 +522,7 @@ bool CDB::Rewrite(CWalletDBWrapper& dbw, const char* pszSkip)
std::string strFileRes = strFile + ".rewrite"; std::string strFileRes = strFile + ".rewrite";
{ // surround usage of db with extra {} { // surround usage of db with extra {}
CDB db(dbw, "r"); CDB db(dbw, "r");
Db* pdbCopy = new Db(env->dbenv.get(), 0); std::unique_ptr<Db> pdbCopy = std::unique_ptr<Db>(new Db(env->dbenv.get(), 0));
int ret = pdbCopy->open(nullptr, // Txn pointer int ret = pdbCopy->open(nullptr, // Txn pointer
strFileRes.c_str(), // Filename strFileRes.c_str(), // Filename
@ -571,7 +571,6 @@ bool CDB::Rewrite(CWalletDBWrapper& dbw, const char* pszSkip)
} else { } else {
pdbCopy->close(0); pdbCopy->close(0);
} }
delete pdbCopy;
} }
if (fSuccess) { if (fSuccess) {
Db dbA(env->dbenv.get(), 0); Db dbA(env->dbenv.get(), 0);

Loading…
Cancel
Save