Fix crash-on-osx-on-shutdown bug. And cleanup CDB handling in Rewrite.
This commit is contained in:
parent
709c1b267f
commit
8d0923109d
1 changed files with 13 additions and 6 deletions
19
src/db.cpp
19
src/db.cpp
|
@ -34,7 +34,14 @@ static void EnvShutdown(bool fRemoveLogFiles)
|
|||
return;
|
||||
|
||||
fDbEnvInit = false;
|
||||
dbenv.close(0);
|
||||
try
|
||||
{
|
||||
dbenv.close(0);
|
||||
}
|
||||
catch (const DbException& e)
|
||||
{
|
||||
printf("EnvShutdown exception: %s (%d)\n", e.what(), e.get_errno());
|
||||
}
|
||||
DbEnv(0).remove(GetDataDir().c_str(), 0);
|
||||
|
||||
if (fRemoveLogFiles)
|
||||
|
@ -229,7 +236,10 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip)
|
|||
CDataStream ssValue;
|
||||
int ret = db.ReadAtCursor(pcursor, ssKey, ssValue, DB_NEXT);
|
||||
if (ret == DB_NOTFOUND)
|
||||
{
|
||||
pcursor->close();
|
||||
break;
|
||||
}
|
||||
else if (ret != 0)
|
||||
{
|
||||
pcursor->close();
|
||||
|
@ -253,14 +263,11 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip)
|
|||
}
|
||||
if (fSuccess)
|
||||
{
|
||||
Db* pdb = mapDb[strFile];
|
||||
if (pdb->close(0))
|
||||
fSuccess = false;
|
||||
db.Close();
|
||||
CloseDb(strFile);
|
||||
if (pdbCopy->close(0))
|
||||
fSuccess = false;
|
||||
delete pdb;
|
||||
delete pdbCopy;
|
||||
mapDb[strFile] = NULL;
|
||||
}
|
||||
if (fSuccess)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue