mirror of
https://github.com/twisterarmy/twister-core.git
synced 2025-01-11 07:17:53 +00:00
Merge pull request #636 from gavinandresen/master
Fix crash-on-wallet-upgrade bug on OSX
This commit is contained in:
commit
1b93ea0e31
@ -256,7 +256,7 @@ windows:RC_FILE = src/qt/res/bitcoin-qt.rc
|
|||||||
macx:HEADERS += src/qt/macdockiconhandler.h
|
macx:HEADERS += src/qt/macdockiconhandler.h
|
||||||
macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm
|
macx:OBJECTIVE_SOURCES += src/qt/macdockiconhandler.mm
|
||||||
macx:LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
|
macx:LIBS += -framework Foundation -framework ApplicationServices -framework AppKit
|
||||||
macx:DEFINES += MAC_OSX MSG_NOSIGNAL=0 BOOST_FILESYSTEM_VERSION=3
|
macx:DEFINES += MAC_OSX MSG_NOSIGNAL=0
|
||||||
macx:ICON = src/qt/res/icons/bitcoin.icns
|
macx:ICON = src/qt/res/icons/bitcoin.icns
|
||||||
macx:TARGET = "Bitcoin-Qt"
|
macx:TARGET = "Bitcoin-Qt"
|
||||||
|
|
||||||
|
21
src/db.cpp
21
src/db.cpp
@ -34,7 +34,14 @@ static void EnvShutdown(bool fRemoveLogFiles)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
fDbEnvInit = false;
|
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);
|
DbEnv(0).remove(GetDataDir().c_str(), 0);
|
||||||
|
|
||||||
if (fRemoveLogFiles)
|
if (fRemoveLogFiles)
|
||||||
@ -44,7 +51,7 @@ static void EnvShutdown(bool fRemoveLogFiles)
|
|||||||
while (it != filesystem::directory_iterator())
|
while (it != filesystem::directory_iterator())
|
||||||
{
|
{
|
||||||
const filesystem::path& p = it->path();
|
const filesystem::path& p = it->path();
|
||||||
#if BOOST_FILESYSTEM_VERSION == 3
|
#if BOOST_FILESYSTEM_VERSION >= 3
|
||||||
std::string f = p.filename().generic_string();
|
std::string f = p.filename().generic_string();
|
||||||
#else
|
#else
|
||||||
std::string f = p.filename();
|
std::string f = p.filename();
|
||||||
@ -229,7 +236,10 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip)
|
|||||||
CDataStream ssValue;
|
CDataStream ssValue;
|
||||||
int ret = db.ReadAtCursor(pcursor, ssKey, ssValue, DB_NEXT);
|
int ret = db.ReadAtCursor(pcursor, ssKey, ssValue, DB_NEXT);
|
||||||
if (ret == DB_NOTFOUND)
|
if (ret == DB_NOTFOUND)
|
||||||
|
{
|
||||||
|
pcursor->close();
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
else if (ret != 0)
|
else if (ret != 0)
|
||||||
{
|
{
|
||||||
pcursor->close();
|
pcursor->close();
|
||||||
@ -253,14 +263,11 @@ bool CDB::Rewrite(const string& strFile, const char* pszSkip)
|
|||||||
}
|
}
|
||||||
if (fSuccess)
|
if (fSuccess)
|
||||||
{
|
{
|
||||||
Db* pdb = mapDb[strFile];
|
db.Close();
|
||||||
if (pdb->close(0))
|
CloseDb(strFile);
|
||||||
fSuccess = false;
|
|
||||||
if (pdbCopy->close(0))
|
if (pdbCopy->close(0))
|
||||||
fSuccess = false;
|
fSuccess = false;
|
||||||
delete pdb;
|
|
||||||
delete pdbCopy;
|
delete pdbCopy;
|
||||||
mapDb[strFile] = NULL;
|
|
||||||
}
|
}
|
||||||
if (fSuccess)
|
if (fSuccess)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user