diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/init.cpp | 7 | ||||
-rw-r--r-- | src/wallet/wallet.cpp | 14 |
2 files changed, 16 insertions, 5 deletions
diff --git a/src/init.cpp b/src/init.cpp index 0fd8de08c4..ba98600141 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1427,12 +1427,15 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) std::string warningString; std::string errorString; pwalletMain = CWallet::InitLoadWallet(fDisableWallet, strWalletFile, warningString, errorString); - if (!pwalletMain) - return false; if (!warningString.empty()) InitWarning(warningString); if (!errorString.empty()) + { + LogPrintf("%s", errorString); return InitError(errorString); + } + if (!pwalletMain) + return false; } #else // ENABLE_WALLET LogPrintf("No wallet support compiled in!\n"); diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 56287d4f44..d409d74801 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -3002,6 +3002,7 @@ CWallet* CWallet::InitLoadWallet(bool fDisableWallet, const std::string& strWall CWallet *tempWallet = new CWallet(strWalletFile); DBErrors nZapWalletRet = tempWallet->ZapWalletTx(vWtx); if (nZapWalletRet != DB_LOAD_OK) { + errorString = _("Error loading wallet.dat: Wallet corrupted"); uiInterface.InitMessage(_("Error loading wallet.dat: Wallet corrupted")); return NULL; } @@ -3031,10 +3032,12 @@ CWallet* CWallet::InitLoadWallet(bool fDisableWallet, const std::string& strWall { errorString += strprintf(_("Wallet needed to be rewritten: restart %s to complete"), _(PACKAGE_NAME)) + "\n"; LogPrintf("%s", errorString); - return walletInstance; } else errorString += _("Error loading wallet.dat") + "\n"; + + if (!errorString.empty()) + return NULL; } if (GetBoolArg("-upgradewallet", fFirstRun)) @@ -3049,7 +3052,10 @@ CWallet* CWallet::InitLoadWallet(bool fDisableWallet, const std::string& strWall else LogPrintf("Allowing wallet upgrade up to %i\n", nMaxVersion); if (nMaxVersion < walletInstance->GetVersion()) + { errorString += _("Cannot downgrade wallet") + "\n"; + return NULL; + } walletInstance->SetMaxVersion(nMaxVersion); } @@ -3062,13 +3068,15 @@ CWallet* CWallet::InitLoadWallet(bool fDisableWallet, const std::string& strWall if (walletInstance->GetKeyFromPool(newDefaultKey)) { walletInstance->SetDefaultKey(newDefaultKey); if (!walletInstance->SetAddressBook(walletInstance->vchDefaultKey.GetID(), "", "receive")) + { errorString += _("Cannot write default address") += "\n"; + return NULL; + } } walletInstance->SetBestChain(chainActive.GetLocator()); } - LogPrintf("%s", errorString); LogPrintf(" wallet %15dms\n", GetTimeMillis() - nStart); RegisterValidationInterface(walletInstance); @@ -3099,7 +3107,7 @@ CWallet* CWallet::InitLoadWallet(bool fDisableWallet, const std::string& strWall if (pindexRescan != block) { errorString = _("Prune: last wallet synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)"); - return walletInstance; + return NULL; } } |