@@ -1385,19 +1385,28 @@ bool CWallet::IsWalletFlagSet(uint64_t flag) const
1385
1385
return (m_wallet_flags & flag);
1386
1386
}
1387
1387
1388
- bool CWallet::SetWalletFlags (uint64_t overwriteFlags, bool memonly )
1388
+ bool CWallet::LoadWalletFlags (uint64_t flags )
1389
1389
{
1390
1390
LOCK (cs_wallet);
1391
- m_wallet_flags = overwriteFlags;
1392
- if (((overwriteFlags & KNOWN_WALLET_FLAGS) >> 32 ) ^ (overwriteFlags >> 32 )) {
1391
+ if (((flags & KNOWN_WALLET_FLAGS) >> 32 ) ^ (flags >> 32 )) {
1393
1392
// contains unknown non-tolerable wallet flags
1394
1393
return false ;
1395
1394
}
1396
- if (!memonly && !WalletBatch (*database).WriteWalletFlags (m_wallet_flags)) {
1395
+ m_wallet_flags = flags;
1396
+
1397
+ return true ;
1398
+ }
1399
+
1400
+ bool CWallet::AddWalletFlags (uint64_t flags)
1401
+ {
1402
+ LOCK (cs_wallet);
1403
+ // We should never be writing unknown onon-tolerable wallet flags
1404
+ assert (!(((flags & KNOWN_WALLET_FLAGS) >> 32 ) ^ (flags >> 32 )));
1405
+ if (!WalletBatch (*database).WriteWalletFlags (flags)) {
1397
1406
throw std::runtime_error (std::string (__func__) + " : writing wallet flags failed" );
1398
1407
}
1399
1408
1400
- return true ;
1409
+ return LoadWalletFlags (flags) ;
1401
1410
}
1402
1411
1403
1412
int64_t CWalletTx::GetTxTime () const
@@ -3759,7 +3768,7 @@ std::shared_ptr<CWallet> CWallet::CreateWalletFromFile(interfaces::Chain& chain,
3759
3768
// ensure this wallet.dat can only be opened by clients supporting HD with chain split and expects no default key
3760
3769
walletInstance->SetMinVersion (FEATURE_LATEST);
3761
3770
3762
- walletInstance->SetWalletFlags (wallet_creation_flags, false );
3771
+ walletInstance->AddWalletFlags (wallet_creation_flags);
3763
3772
3764
3773
// Only create LegacyScriptPubKeyMan when not descriptor wallet
3765
3774
if (!walletInstance->IsWalletFlagSet (WALLET_FLAG_DESCRIPTORS)) {
0 commit comments