Skip isVaultPseudoAccountFrozen() for non-vault shares.

This commit is contained in:
Gregory Tsipenyuk
2026-04-30 13:57:01 -04:00
parent 017256e235
commit fe582c1379
3 changed files with 5 additions and 3 deletions

View File

@@ -188,7 +188,8 @@ enum LedgerEntryType : std::uint16_t {
LEDGER_OBJECT(MPToken, \
LSF_FLAG2(lsfMPTLocked, 0x00000001) \
LSF_FLAG(lsfMPTAuthorized, 0x00000002) \
LSF_FLAG(lsfMPTAMM, 0x00000004)) \
LSF_FLAG(lsfMPTAMM, 0x00000004) \
LSF_FLAG(lsfMPTVault, 0x00000008)) \
\
LEDGER_OBJECT(Credential, \
LSF_FLAG(lsfAccepted, 0x00010000)) \

View File

@@ -71,8 +71,9 @@ bool
isFrozen(ReadView const& view, AccountID const& account, SLE const& mptSLE, int depth)
{
MPTIssue const mptIssue{mptSLE[sfMPTokenIssuanceID]};
bool const isVaultShares = mptSLE.isFlag(lsfMPTVault);
return isGlobalFrozen(view, mptIssue) || isIndividualFrozen(view, account, mptSLE) ||
isVaultPseudoAccountFrozen(view, account, mptSLE, depth);
(isVaultShares && isVaultPseudoAccountFrozen(view, account, mptSLE, depth));
}
[[nodiscard]] bool

View File

@@ -174,7 +174,7 @@ VaultCreate::doApply()
: ctx_.tx[~sfScale].value_or(vaultDefaultIOUScale);
auto txFlags = tx.getFlags();
std::uint32_t mptFlags = 0;
std::uint32_t mptFlags = lsfMPTVault;
if ((txFlags & tfVaultShareNonTransferable) == 0)
mptFlags |= (lsfMPTCanEscrow | lsfMPTCanTrade | lsfMPTCanTransfer);
if ((txFlags & tfVaultPrivate) != 0u)