aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/db.cpp
diff options
context:
space:
mode:
authorKarl-Johan Alm <karljohan-alm@garage.co.jp>2017-08-09 17:24:15 +0900
committerKarl-Johan Alm <karljohan-alm@garage.co.jp>2017-08-09 17:28:29 +0900
commit03bc719a85cb4928cb4b43d0bc4142f72cb01b23 (patch)
treeac270ee7086d79acfd041d44dd6ef847a3f0960e /src/wallet/db.cpp
parent929fd7276c0f0c30b9416f61a6f5f35d763d81e4 (diff)
downloadbitcoin-03bc719a85cb4928cb4b43d0bc4142f72cb01b23.tar.xz
[wallet] Close DB on error.
Diffstat (limited to 'src/wallet/db.cpp')
-rw-r--r--src/wallet/db.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/wallet/db.cpp b/src/wallet/db.cpp
index da2d180756..5bf944ec8d 100644
--- a/src/wallet/db.cpp
+++ b/src/wallet/db.cpp
@@ -101,8 +101,10 @@ bool CDBEnv::Open(const fs::path& pathIn)
DB_RECOVER |
nEnvFlags,
S_IRUSR | S_IWUSR);
- if (ret != 0)
+ if (ret != 0) {
+ dbenv->close(0);
return error("CDBEnv::Open: Error %d opening database environment: %s\n", ret, DbEnv::strerror(ret));
+ }
fDbEnvInit = true;
fMockDb = false;
@@ -196,9 +198,9 @@ bool CDB::Recover(const std::string& filename, void *callbackDataIn, bool (*reco
DB_BTREE, // Database type
DB_CREATE, // Flags
0);
- if (ret > 0)
- {
+ if (ret > 0) {
LogPrintf("Cannot create database file %s\n", filename);
+ pdbCopy->close(0);
return false;
}
@@ -536,8 +538,10 @@ bool CDB::Rewrite(CWalletDBWrapper& dbw, const char* pszSkip)
env->CloseDb(strFile);
if (pdbCopy->close(0))
fSuccess = false;
- delete pdbCopy;
+ } else {
+ pdbCopy->close(0);
}
+ delete pdbCopy;
}
if (fSuccess) {
Db dbA(env->dbenv, 0);