mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-11 01:11:50 +02:00
Split SetWalletFlags into Add/LoadWalletFlags
Remove memonly bool and follow typical Add and Load pattern used everywhere else.
This commit is contained in:
parent
d9cd095b59
commit
3a9aba21a4
@ -1385,19 +1385,28 @@ bool CWallet::IsWalletFlagSet(uint64_t flag) const
|
|||||||
return (m_wallet_flags & flag);
|
return (m_wallet_flags & flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CWallet::SetWalletFlags(uint64_t overwriteFlags, bool memonly)
|
bool CWallet::LoadWalletFlags(uint64_t flags)
|
||||||
{
|
{
|
||||||
LOCK(cs_wallet);
|
LOCK(cs_wallet);
|
||||||
m_wallet_flags = overwriteFlags;
|
if (((flags & KNOWN_WALLET_FLAGS) >> 32) ^ (flags >> 32)) {
|
||||||
if (((overwriteFlags & KNOWN_WALLET_FLAGS) >> 32) ^ (overwriteFlags >> 32)) {
|
|
||||||
// contains unknown non-tolerable wallet flags
|
// contains unknown non-tolerable wallet flags
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!memonly && !WalletBatch(*database).WriteWalletFlags(m_wallet_flags)) {
|
m_wallet_flags = flags;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CWallet::AddWalletFlags(uint64_t flags)
|
||||||
|
{
|
||||||
|
LOCK(cs_wallet);
|
||||||
|
// We should never be writing unknown onon-tolerable wallet flags
|
||||||
|
assert(!(((flags & KNOWN_WALLET_FLAGS) >> 32) ^ (flags >> 32)));
|
||||||
|
if (!WalletBatch(*database).WriteWalletFlags(flags)) {
|
||||||
throw std::runtime_error(std::string(__func__) + ": writing wallet flags failed");
|
throw std::runtime_error(std::string(__func__) + ": writing wallet flags failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return LoadWalletFlags(flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t CWalletTx::GetTxTime() const
|
int64_t CWalletTx::GetTxTime() const
|
||||||
@ -3759,7 +3768,7 @@ std::shared_ptr<CWallet> CWallet::CreateWalletFromFile(interfaces::Chain& chain,
|
|||||||
// ensure this wallet.dat can only be opened by clients supporting HD with chain split and expects no default key
|
// ensure this wallet.dat can only be opened by clients supporting HD with chain split and expects no default key
|
||||||
walletInstance->SetMinVersion(FEATURE_LATEST);
|
walletInstance->SetMinVersion(FEATURE_LATEST);
|
||||||
|
|
||||||
walletInstance->SetWalletFlags(wallet_creation_flags, false);
|
walletInstance->AddWalletFlags(wallet_creation_flags);
|
||||||
|
|
||||||
// Only create LegacyScriptPubKeyMan when not descriptor wallet
|
// Only create LegacyScriptPubKeyMan when not descriptor wallet
|
||||||
if (!walletInstance->IsWalletFlagSet(WALLET_FLAG_DESCRIPTORS)) {
|
if (!walletInstance->IsWalletFlagSet(WALLET_FLAG_DESCRIPTORS)) {
|
||||||
|
@ -1174,7 +1174,9 @@ public:
|
|||||||
|
|
||||||
/** overwrite all flags by the given uint64_t
|
/** overwrite all flags by the given uint64_t
|
||||||
returns false if unknown, non-tolerable flags are present */
|
returns false if unknown, non-tolerable flags are present */
|
||||||
bool SetWalletFlags(uint64_t overwriteFlags, bool memOnly);
|
bool AddWalletFlags(uint64_t flags);
|
||||||
|
/** Loads the flags into the wallet. (used by LoadWallet) */
|
||||||
|
bool LoadWalletFlags(uint64_t flags);
|
||||||
|
|
||||||
/** Determine if we are a legacy wallet */
|
/** Determine if we are a legacy wallet */
|
||||||
bool IsLegacy() const;
|
bool IsLegacy() const;
|
||||||
|
@ -544,7 +544,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
|
|||||||
} else if (strType == DBKeys::FLAGS) {
|
} else if (strType == DBKeys::FLAGS) {
|
||||||
uint64_t flags;
|
uint64_t flags;
|
||||||
ssValue >> flags;
|
ssValue >> flags;
|
||||||
if (!pwallet->SetWalletFlags(flags, true)) {
|
if (!pwallet->LoadWalletFlags(flags)) {
|
||||||
strErr = "Error reading wallet database: Unknown non-tolerable wallet flags found";
|
strErr = "Error reading wallet database: Unknown non-tolerable wallet flags found";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user