@@ -75,22 +75,19 @@ void CDBEnv::EnvShutdown()
75
75
76
76
void CDBEnv::Reset ()
77
77
{
78
- delete dbenv;
79
- dbenv = new DbEnv (DB_CXX_NO_EXCEPTIONS);
78
+ dbenv.reset (new DbEnv (DB_CXX_NO_EXCEPTIONS));
80
79
fDbEnvInit = false ;
81
80
fMockDb = false ;
82
81
}
83
82
84
- CDBEnv::CDBEnv () : dbenv( nullptr )
83
+ CDBEnv::CDBEnv ()
85
84
{
86
85
Reset ();
87
86
}
88
87
89
88
CDBEnv::~CDBEnv ()
90
89
{
91
90
EnvShutdown ();
92
- delete dbenv;
93
- dbenv = nullptr ;
94
91
}
95
92
96
93
void CDBEnv::Close ()
@@ -182,7 +179,7 @@ CDBEnv::VerifyResult CDBEnv::Verify(const std::string& strFile, recoverFunc_type
182
179
LOCK (cs_db);
183
180
assert (mapFileUseCount.count (strFile) == 0 );
184
181
185
- Db db (dbenv, 0 );
182
+ Db db (dbenv. get () , 0 );
186
183
int result = db.verify (strFile.c_str (), nullptr , nullptr , 0 );
187
184
if (result == 0 )
188
185
return VERIFY_OK;
@@ -225,7 +222,7 @@ bool CDB::Recover(const std::string& filename, void *callbackDataIn, bool (*reco
225
222
}
226
223
LogPrintf (" Salvage(aggressive) found %u records\n " , salvagedData.size ());
227
224
228
- std::unique_ptr<Db> pdbCopy (new Db (bitdb.dbenv , 0 ));
225
+ std::unique_ptr<Db> pdbCopy (new Db (bitdb.dbenv . get () , 0 ));
229
226
int ret = pdbCopy->open (nullptr , // Txn pointer
230
227
filename.c_str (), // Filename
231
228
" main" , // Logical db name
@@ -334,7 +331,7 @@ bool CDBEnv::Salvage(const std::string& strFile, bool fAggressive, std::vector<C
334
331
335
332
std::stringstream strDump;
336
333
337
- Db db (dbenv, 0 );
334
+ Db db (dbenv. get () , 0 );
338
335
int result = db.verify (strFile.c_str (), nullptr , &strDump, flags);
339
336
if (result == DB_VERIFY_BAD) {
340
337
LogPrintf (" CDBEnv::Salvage: Database salvage found errors, all data may not be recoverable.\n " );
@@ -525,7 +522,7 @@ bool CDB::Rewrite(CWalletDBWrapper& dbw, const char* pszSkip)
525
522
std::string strFileRes = strFile + " .rewrite" ;
526
523
{ // surround usage of db with extra {}
527
524
CDB db (dbw, " r" );
528
- Db* pdbCopy = new Db (env->dbenv , 0 );
525
+ Db* pdbCopy = new Db (env->dbenv . get () , 0 );
529
526
530
527
int ret = pdbCopy->open (nullptr , // Txn pointer
531
528
strFileRes.c_str (), // Filename
@@ -577,10 +574,10 @@ bool CDB::Rewrite(CWalletDBWrapper& dbw, const char* pszSkip)
577
574
delete pdbCopy;
578
575
}
579
576
if (fSuccess ) {
580
- Db dbA (env->dbenv , 0 );
577
+ Db dbA (env->dbenv . get () , 0 );
581
578
if (dbA.remove (strFile.c_str (), nullptr , 0 ))
582
579
fSuccess = false ;
583
- Db dbB (env->dbenv , 0 );
580
+ Db dbB (env->dbenv . get () , 0 );
584
581
if (dbB.rename (strFileRes.c_str (), nullptr , strFile.c_str (), 0 ))
585
582
fSuccess = false ;
586
583
}
0 commit comments