diff options
| author | Karl-Johan Alm <[email protected]> | 2017-08-09 17:24:15 +0900 |
|---|---|---|
| committer | Karl-Johan Alm <[email protected]> | 2017-08-09 17:28:29 +0900 |
| commit | 03bc719a85cb4928cb4b43d0bc4142f72cb01b23 (patch) | |
| tree | ac270ee7086d79acfd041d44dd6ef847a3f0960e /src/wallet/db.cpp | |
| parent | Merge #10695: [qa] Rewrite BIP65/BIP66 functional tests (diff) | |
| download | discoin-03bc719a85cb4928cb4b43d0bc4142f72cb01b23.tar.xz discoin-03bc719a85cb4928cb4b43d0bc4142f72cb01b23.zip | |
[wallet] Close DB on error.
Diffstat (limited to 'src/wallet/db.cpp')
| -rw-r--r-- | src/wallet/db.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/wallet/db.cpp b/src/wallet/db.cpp index da2d18075..5bf944ec8 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); |