@@ -327,7 +327,7 @@ static void registerSignalHandler(int signal, void(*handler)(int))
327327
328328bool static InitError (const std::string& str)
329329{
330- uiInterface.ThreadSafeMessageBox (str, " " , CClientUIInterface::MSG_ERROR);
330+ uiInterface.ThreadSafeMessageBox (str, " Init Error " , CClientUIInterface::MSG_ERROR);
331331 return false ;
332332}
333333
@@ -1673,17 +1673,27 @@ bool AppInit2()
16731673
16741674 int prev_version = pwalletMain->GetVersion ();
16751675 if (GetBoolArg (" -upgradewallet" , fFirstRun )) {
1676- int nMaxVersion = GetArg (" -upgradewallet" , 0 );
1677- if (nMaxVersion == 0 ) // the -upgradewallet without argument case
1678- {
1679- LogPrintf (" Performing wallet upgrade to %i\n " , FEATURE_LATEST);
1680- nMaxVersion = FEATURE_LATEST;
1681- pwalletMain->SetMinVersion (FEATURE_LATEST); // permanently upgrade the wallet immediately
1682- } else
1683- LogPrintf (" Allowing wallet upgrade up to %i\n " , nMaxVersion);
1684- if (nMaxVersion < pwalletMain->GetVersion ())
1685- strErrors << _ (" Cannot downgrade wallet" ) << " \n " ;
1686- pwalletMain->SetMaxVersion (nMaxVersion);
1676+
1677+ if (prev_version <= FEATURE_PRE_PIVX && pwalletMain->IsLocked ()) {
1678+ // Cannot upgrade a locked wallet
1679+ std::string strProblem = " Cannot upgrade a locked wallet.\n " ;
1680+ strErrors << _ (" Error: " ) << strProblem;
1681+ LogPrintf (" %s" , strErrors.str ());
1682+ return InitError (strProblem);
1683+ } else {
1684+
1685+ int nMaxVersion = GetArg (" -upgradewallet" , 0 );
1686+ if (nMaxVersion == 0 ) // the -upgradewallet without argument case
1687+ {
1688+ LogPrintf (" Performing wallet upgrade to %i\n " , FEATURE_LATEST);
1689+ nMaxVersion = FEATURE_LATEST;
1690+ pwalletMain->SetMinVersion (FEATURE_LATEST); // permanently upgrade the wallet immediately
1691+ } else
1692+ LogPrintf (" Allowing wallet upgrade up to %i\n " , nMaxVersion);
1693+ if (nMaxVersion < pwalletMain->GetVersion ())
1694+ strErrors << _ (" Cannot downgrade wallet" ) << " \n " ;
1695+ pwalletMain->SetMaxVersion (nMaxVersion);
1696+ }
16871697 }
16881698
16891699 // Upgrade to HD if explicit upgrade was requested.
0 commit comments