@@ -3830,8 +3830,10 @@ std::shared_ptr<CWallet> CWallet::CreateWalletFromFile(interfaces::Chain& chain,
3830
3830
}
3831
3831
}
3832
3832
3833
- if (!UpgradeWallet (walletInstance, fFirstRun , error, warnings)) {
3834
- return nullptr ;
3833
+ if (gArgs .GetBoolArg (" -upgradewallet" , false )) {
3834
+ if (!UpgradeWallet (walletInstance, error, warnings)) {
3835
+ return nullptr ;
3836
+ }
3835
3837
}
3836
3838
3837
3839
if (fFirstRun )
@@ -4095,38 +4097,33 @@ const CAddressBookData* CWallet::FindAddressBookEntry(const CTxDestination& dest
4095
4097
return &address_book_it->second ;
4096
4098
}
4097
4099
4098
- bool CWallet::UpgradeWallet (std::shared_ptr<CWallet> walletInstance, bool fFirstRun , std::string& error, std::vector<std::string>& warnings)
4100
+ bool CWallet::UpgradeWallet (std::shared_ptr<CWallet> walletInstance, std::string& error, std::vector<std::string>& warnings)
4099
4101
{
4100
4102
int prev_version = walletInstance->GetVersion ();
4101
- if (gArgs .GetBoolArg (" -upgradewallet" , fFirstRun ))
4103
+ int nMaxVersion = gArgs .GetArg (" -upgradewallet" , 0 );
4104
+ if (nMaxVersion == 0 ) // the -upgradewallet without argument case
4102
4105
{
4103
- int nMaxVersion = gArgs .GetArg (" -upgradewallet" , 0 );
4104
- if (nMaxVersion == 0 ) // the -upgradewallet without argument case
4105
- {
4106
- walletInstance->WalletLogPrintf (" Performing wallet upgrade to %i\n " , FEATURE_LATEST);
4107
- nMaxVersion = FEATURE_LATEST;
4108
- walletInstance->SetMinVersion (FEATURE_LATEST); // permanently upgrade the wallet immediately
4109
- }
4110
- else
4111
- walletInstance->WalletLogPrintf (" Allowing wallet upgrade up to %i\n " , nMaxVersion);
4112
- if (nMaxVersion < walletInstance->GetVersion ())
4113
- {
4114
- error = _ (" Cannot downgrade wallet" ).translated ;
4115
- return false ;
4116
- }
4117
- walletInstance->SetMaxVersion (nMaxVersion);
4106
+ walletInstance->WalletLogPrintf (" Performing wallet upgrade to %i\n " , FEATURE_LATEST);
4107
+ nMaxVersion = FEATURE_LATEST;
4108
+ walletInstance->SetMinVersion (FEATURE_LATEST); // permanently upgrade the wallet immediately
4118
4109
}
4110
+ else
4111
+ walletInstance->WalletLogPrintf (" Allowing wallet upgrade up to %i\n " , nMaxVersion);
4112
+ if (nMaxVersion < walletInstance->GetVersion ())
4113
+ {
4114
+ error = _ (" Cannot downgrade wallet" ).translated ;
4115
+ return false ;
4116
+ }
4117
+ walletInstance->SetMaxVersion (nMaxVersion);
4119
4118
4120
- // Upgrade to HD if explicit upgrade
4121
- if (gArgs .GetBoolArg (" -upgradewallet" , false )) {
4122
- LOCK (walletInstance->cs_wallet );
4119
+ LOCK (walletInstance->cs_wallet );
4123
4120
4124
- // Do not upgrade versions to any version between HD_SPLIT and FEATURE_PRE_SPLIT_KEYPOOL unless already supporting HD_SPLIT
4125
- int max_version = walletInstance->GetVersion ();
4126
- if (!walletInstance->CanSupportFeature (FEATURE_HD_SPLIT) && max_version >= FEATURE_HD_SPLIT && max_version < FEATURE_PRE_SPLIT_KEYPOOL) {
4127
- error = _ (" Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use -upgradewallet=169900 or -upgradewallet with no version specified." ).translated ;
4128
- return false ;
4129
- }
4121
+ // Do not upgrade versions to any version between HD_SPLIT and FEATURE_PRE_SPLIT_KEYPOOL unless already supporting HD_SPLIT
4122
+ int max_version = walletInstance->GetVersion ();
4123
+ if (!walletInstance->CanSupportFeature (FEATURE_HD_SPLIT) && max_version >= FEATURE_HD_SPLIT && max_version < FEATURE_PRE_SPLIT_KEYPOOL) {
4124
+ error = _ (" Cannot upgrade a non HD split wallet without upgrading to support pre split keypool. Please use -upgradewallet=169900 or -upgradewallet with no version specified." ).translated ;
4125
+ return false ;
4126
+ }
4130
4127
4131
4128
for (auto spk_man : walletInstance->GetActiveScriptPubKeyMans ()) {
4132
4129
if (!spk_man->Upgrade (prev_version, error)) {
0 commit comments