From f5689990ed50644adffbd538291bb2935077d396 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Tue, 30 Jun 2026 13:49:58 -0400 Subject: [PATCH] Revert "switch to &&" This reverts commit 8f470b750dd08cc04e788b1443bec28c2fb2cbd4. --- include/xrpl/ledger/View.h | 2 +- include/xrpl/ledger/helpers/EscrowHelpers.h | 10 +++++----- include/xrpl/ledger/helpers/MPTokenHelpers.h | 8 ++++---- include/xrpl/ledger/helpers/RippleStateHelpers.h | 4 ++-- include/xrpl/ledger/helpers/SponsorHelpers.h | 2 +- include/xrpl/ledger/helpers/TokenHelpers.h | 4 ++-- .../tx/transactors/token/MPTokenIssuanceCreate.h | 2 +- src/libxrpl/ledger/View.cpp | 7 +++---- src/libxrpl/ledger/helpers/MPTokenHelpers.cpp | 12 ++++++------ src/libxrpl/ledger/helpers/RippleStateHelpers.cpp | 6 +++--- src/libxrpl/ledger/helpers/TokenHelpers.cpp | 13 +++++-------- .../tx/transactors/Sponsor/SponsorshipSet.cpp | 4 +++- .../tx/transactors/account/SignerListSet.cpp | 3 ++- src/libxrpl/tx/transactors/check/CheckCash.cpp | 3 ++- src/libxrpl/tx/transactors/check/CheckCreate.cpp | 3 ++- src/libxrpl/tx/transactors/delegate/DelegateSet.cpp | 4 +++- src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp | 3 ++- src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp | 3 ++- src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp | 3 ++- .../transactors/lending/LoanBrokerCoverWithdraw.cpp | 10 +++------- .../tx/transactors/lending/LoanBrokerDelete.cpp | 4 +++- .../tx/transactors/lending/LoanBrokerSet.cpp | 4 +++- src/libxrpl/tx/transactors/lending/LoanPay.cpp | 3 ++- src/libxrpl/tx/transactors/lending/LoanSet.cpp | 9 +++------ .../tx/transactors/payment/DepositPreauth.cpp | 5 +++-- .../payment_channel/PaymentChannelCreate.cpp | 3 ++- .../payment_channel/PaymentChannelFund.cpp | 3 ++- .../tx/transactors/token/MPTokenAuthorize.cpp | 3 ++- .../tx/transactors/token/MPTokenIssuanceCreate.cpp | 7 ++++--- src/libxrpl/tx/transactors/token/TrustSet.cpp | 4 +++- src/libxrpl/tx/transactors/vault/VaultClawback.cpp | 3 ++- src/libxrpl/tx/transactors/vault/VaultCreate.cpp | 9 +++++---- src/libxrpl/tx/transactors/vault/VaultDelete.cpp | 7 ++++--- src/libxrpl/tx/transactors/vault/VaultDeposit.cpp | 7 ++++--- src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp | 13 ++++--------- 35 files changed, 100 insertions(+), 90 deletions(-) diff --git a/include/xrpl/ledger/View.h b/include/xrpl/ledger/View.h index 968923b50b..6643ab2cb1 100644 --- a/include/xrpl/ledger/View.h +++ b/include/xrpl/ledger/View.h @@ -201,7 +201,7 @@ canWithdraw(ReadView const& view, STTx const& tx); [[nodiscard]] TER doWithdraw( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& senderAcct, AccountID const& dstAcct, AccountID const& sourceAcct, diff --git a/include/xrpl/ledger/helpers/EscrowHelpers.h b/include/xrpl/ledger/helpers/EscrowHelpers.h index c1f488c4b9..533daa0cf2 100644 --- a/include/xrpl/ledger/helpers/EscrowHelpers.h +++ b/include/xrpl/ledger/helpers/EscrowHelpers.h @@ -17,7 +17,7 @@ namespace xrpl { template TER escrowUnlockApplyHelper( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, Rate lockedRate, SLE::ref sleDest, STAmount const& xrpBalance, @@ -31,7 +31,7 @@ escrowUnlockApplyHelper( template <> inline TER escrowUnlockApplyHelper( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, Rate lockedRate, SLE::ref sleDest, STAmount const& xrpBalance, @@ -58,7 +58,7 @@ escrowUnlockApplyHelper( if (!view.exists(trustLineKey) && createAsset) { // Can the account cover the trust line's reserve? - auto const sponsorSle = getTxReserveSponsor({.view = ctx.view, .tx = ctx.tx}); + auto const sponsorSle = getTxReserveSponsor(ctx); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE @@ -168,7 +168,7 @@ escrowUnlockApplyHelper( template <> inline TER escrowUnlockApplyHelper( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, Rate lockedRate, SLE::ref sleDest, STAmount const& xrpBalance, @@ -188,7 +188,7 @@ escrowUnlockApplyHelper( auto const mptKeylet = keylet::mptoken(issuanceKey.key, receiver); if (!view.exists(mptKeylet) && createAsset && !receiverIssuer) { - auto const sponsorSle = getTxReserveSponsor({.view = ctx.view, .tx = ctx.tx}); + auto const sponsorSle = getTxReserveSponsor(ctx); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE diff --git a/include/xrpl/ledger/helpers/MPTokenHelpers.h b/include/xrpl/ledger/helpers/MPTokenHelpers.h index 370efe5342..cbdffdfc91 100644 --- a/include/xrpl/ledger/helpers/MPTokenHelpers.h +++ b/include/xrpl/ledger/helpers/MPTokenHelpers.h @@ -71,7 +71,7 @@ canAddHolding(ReadView const& view, MPTIssue const& mptIssue); [[nodiscard]] TER authorizeMPToken( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, XRPAmount const& priorBalance, MPTID const& mptIssuanceID, AccountID const& account, @@ -102,7 +102,7 @@ requireAuth( */ [[nodiscard]] TER enforceMPTokenAuthorization( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, MPTID const& mptIssuanceID, AccountID const& account, XRPAmount const& priorBalance, @@ -188,7 +188,7 @@ canMPTTradeAndTransfer( [[nodiscard]] TER addEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, XRPAmount priorBalance, MPTIssue const& mptIssue, @@ -196,7 +196,7 @@ addEmptyHolding( [[nodiscard]] TER removeEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, MPTIssue const& mptIssue, beast::Journal journal); diff --git a/include/xrpl/ledger/helpers/RippleStateHelpers.h b/include/xrpl/ledger/helpers/RippleStateHelpers.h index c6f66543a9..3cd5b79eee 100644 --- a/include/xrpl/ledger/helpers/RippleStateHelpers.h +++ b/include/xrpl/ledger/helpers/RippleStateHelpers.h @@ -229,7 +229,7 @@ canTransfer(ReadView const& view, Issue const& issue, AccountID const& from, Acc /// canAddHolding() in preflight with the same View and Asset [[nodiscard]] TER addEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, XRPAmount priorBalance, Issue const& issue, @@ -237,7 +237,7 @@ addEmptyHolding( [[nodiscard]] TER removeEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, Issue const& issue, beast::Journal journal); diff --git a/include/xrpl/ledger/helpers/SponsorHelpers.h b/include/xrpl/ledger/helpers/SponsorHelpers.h index ee7121b9ae..e1696c7a9b 100644 --- a/include/xrpl/ledger/helpers/SponsorHelpers.h +++ b/include/xrpl/ledger/helpers/SponsorHelpers.h @@ -35,7 +35,7 @@ getTxReserveSponsorAccountID(STTx const& tx) } inline std::expected -getTxReserveSponsor(ApplyViewContext&& ctx) +getTxReserveSponsor(ApplyViewContext& ctx) { auto const sponsorID = getTxReserveSponsorAccountID(ctx.tx); if (sponsorID) diff --git a/include/xrpl/ledger/helpers/TokenHelpers.h b/include/xrpl/ledger/helpers/TokenHelpers.h index e061d48aab..70d4ecab58 100644 --- a/include/xrpl/ledger/helpers/TokenHelpers.h +++ b/include/xrpl/ledger/helpers/TokenHelpers.h @@ -230,7 +230,7 @@ canAddHolding(ReadView const& view, Asset const& asset); [[nodiscard]] TER addEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, XRPAmount priorBalance, Asset const& asset, @@ -238,7 +238,7 @@ addEmptyHolding( [[nodiscard]] TER removeEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, Asset const& asset, beast::Journal journal); diff --git a/include/xrpl/tx/transactors/token/MPTokenIssuanceCreate.h b/include/xrpl/tx/transactors/token/MPTokenIssuanceCreate.h index f1189fe530..0b3acb5d79 100644 --- a/include/xrpl/tx/transactors/token/MPTokenIssuanceCreate.h +++ b/include/xrpl/tx/transactors/token/MPTokenIssuanceCreate.h @@ -63,7 +63,7 @@ public: beast::Journal const& j) override; static std::expected - create(ApplyViewContext&& ctx, beast::Journal journal, MPTCreateArgs const& args); + create(ApplyViewContext& ctx, beast::Journal journal, MPTCreateArgs const& args); }; } // namespace xrpl diff --git a/src/libxrpl/ledger/View.cpp b/src/libxrpl/ledger/View.cpp index 78c8417695..51b0fcdb4c 100644 --- a/src/libxrpl/ledger/View.cpp +++ b/src/libxrpl/ledger/View.cpp @@ -432,7 +432,7 @@ canWithdraw(ReadView const& view, STTx const& tx) TER doWithdraw( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& senderAcct, AccountID const& dstAcct, AccountID const& sourceAcct, @@ -443,8 +443,7 @@ doWithdraw( // Create trust line or MPToken for the receiving account if (dstAcct == senderAcct) { - if (auto const ter = addEmptyHolding( - {.view = ctx.view, .tx = ctx.tx}, senderAcct, priorBalance, amount.asset(), j); + if (auto const ter = addEmptyHolding(ctx, senderAcct, priorBalance, amount.asset(), j); !isTesSuccess(ter) && ter != tecDUPLICATE) return ter; } @@ -470,7 +469,7 @@ doWithdraw( // LCOV_EXCL_STOP } - auto const sponsorSle = getTxReserveSponsor({.view = ctx.view, .tx = ctx.tx}); + auto const sponsorSle = getTxReserveSponsor(ctx); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE diff --git a/src/libxrpl/ledger/helpers/MPTokenHelpers.cpp b/src/libxrpl/ledger/helpers/MPTokenHelpers.cpp index 564fcdd3a9..9acb15d7ae 100644 --- a/src/libxrpl/ledger/helpers/MPTokenHelpers.cpp +++ b/src/libxrpl/ledger/helpers/MPTokenHelpers.cpp @@ -126,7 +126,7 @@ canAddHolding(ReadView const& view, MPTIssue const& mptIssue) [[nodiscard]] TER addEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, XRPAmount priorBalance, MPTIssue const& mptIssue, @@ -149,7 +149,7 @@ addEmptyHolding( [[nodiscard]] TER authorizeMPToken( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, XRPAmount const& priorBalance, MPTID const& mptIssuanceID, AccountID const& account, @@ -286,7 +286,7 @@ authorizeMPToken( [[nodiscard]] TER removeEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, MPTIssue const& mptIssue, beast::Journal journal) @@ -309,7 +309,7 @@ removeEmptyHolding( return tecHAS_OBLIGATIONS; return authorizeMPToken( - {.view = ctx.view, .tx = ctx.tx}, + ctx, {}, // priorBalance mptID, accountID, @@ -418,7 +418,7 @@ requireAuth( [[nodiscard]] TER enforceMPTokenAuthorization( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, MPTID const& mptIssuanceID, AccountID const& account, XRPAmount const& priorBalance, // for MPToken authorization @@ -500,7 +500,7 @@ enforceMPTokenAuthorization( maybeDomainID.has_value() && sleToken == nullptr, "xrpl::enforceMPTokenAuthorization : new MPToken for domain"); if (auto const err = authorizeMPToken( - {.view = ctx.view, .tx = ctx.tx}, + ctx, priorBalance, // priorBalance mptIssuanceID, // mptIssuanceID account, // account diff --git a/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp b/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp index 7854970cdc..4058ca89cc 100644 --- a/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp +++ b/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp @@ -633,7 +633,7 @@ canTransfer(ReadView const& view, Issue const& issue, AccountID const& from, Acc TER addEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, XRPAmount priorBalance, Issue const& issue, @@ -669,7 +669,7 @@ addEmptyHolding( // A reserve sponsor only covers tx.Account's own objects. if (!isPseudoAccount(sleDst) && accountID == tx[sfAccount]) { - auto sle = getTxReserveSponsor({.view = ctx.view, .tx = ctx.tx}); + auto sle = getTxReserveSponsor(ctx); if (!sle) return sle.error(); // LCOV_EXCL_LINE sponsorSle = std::move(*sle); @@ -702,7 +702,7 @@ addEmptyHolding( TER removeEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, Issue const& issue, beast::Journal journal) diff --git a/src/libxrpl/ledger/helpers/TokenHelpers.cpp b/src/libxrpl/ledger/helpers/TokenHelpers.cpp index 5448aa1fe6..482f62d468 100644 --- a/src/libxrpl/ledger/helpers/TokenHelpers.cpp +++ b/src/libxrpl/ledger/helpers/TokenHelpers.cpp @@ -473,7 +473,7 @@ canAddHolding(ReadView const& view, Asset const& asset) TER addEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, XRPAmount priorBalance, Asset const& asset, @@ -481,15 +481,14 @@ addEmptyHolding( { return std::visit( [&](TIss const& issue) -> TER { - return addEmptyHolding( - {.view = ctx.view, .tx = ctx.tx}, accountID, priorBalance, issue, journal); + return addEmptyHolding(ctx, accountID, priorBalance, issue, journal); }, asset.value()); } TER removeEmptyHolding( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, AccountID const& accountID, Asset const& asset, beast::Journal journal) @@ -498,13 +497,11 @@ removeEmptyHolding( [&](TIss const& issue) -> TER { if constexpr (std::is_same_v) { - return removeEmptyHolding( - {.view = ctx.view, .tx = ctx.tx}, accountID, issue, journal); + return removeEmptyHolding(ctx, accountID, issue, journal); } else { - return removeEmptyHolding( - {.view = ctx.view, .tx = ctx.tx}, accountID, issue, journal); + return removeEmptyHolding(ctx, accountID, issue, journal); } }, asset.value()); diff --git a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp index e578ae7ac3..02ba06c29e 100644 --- a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp +++ b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp @@ -203,7 +203,9 @@ SponsorshipSet::doApply() auto const feeAmount = ctx_.tx[~sfFeeAmount]; auto const maxFee = ctx_.tx[~sfMaxFee]; auto const remainingOwnerCount = ctx_.tx[~sfRemainingOwnerCount]; - auto reserveSponsorAccSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + + auto applyViewContext = ctx_.getApplyViewContext(); + auto reserveSponsorAccSle = getTxReserveSponsor(applyViewContext); if (!reserveSponsorAccSle) return reserveSponsorAccSle.error(); // LCOV_EXCL_LINE diff --git a/src/libxrpl/tx/transactors/account/SignerListSet.cpp b/src/libxrpl/tx/transactors/account/SignerListSet.cpp index 8a24d42c8b..8903da47cc 100644 --- a/src/libxrpl/tx/transactors/account/SignerListSet.cpp +++ b/src/libxrpl/tx/transactors/account/SignerListSet.cpp @@ -322,7 +322,8 @@ SignerListSet::replaceSignerList() // We check the reserve against the starting balance because we want to // allow dipping into the reserve to pay fees. This behavior is consistent // with TicketCreate. - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + auto applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE if (auto const ret = checkInsufficientReserve( diff --git a/src/libxrpl/tx/transactors/check/CheckCash.cpp b/src/libxrpl/tx/transactors/check/CheckCash.cpp index 42cc435a9b..257571e5d7 100644 --- a/src/libxrpl/tx/transactors/check/CheckCash.cpp +++ b/src/libxrpl/tx/transactors/check/CheckCash.cpp @@ -388,7 +388,8 @@ CheckCash::doApply() STAmount const flowDeliver{ optDeliverMin ? maxDeliverMin() : ctx_.tx.getFieldAmount(sfAmount)}; - auto const sponsorSle = getTxReserveSponsor({.view = psb, .tx = ctx_.tx}); + auto applyViewContext = ApplyViewContext({.view = psb, .tx = ctx_.tx}); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE diff --git a/src/libxrpl/tx/transactors/check/CheckCreate.cpp b/src/libxrpl/tx/transactors/check/CheckCreate.cpp index d2281ec3ae..4f9120d3a6 100644 --- a/src/libxrpl/tx/transactors/check/CheckCreate.cpp +++ b/src/libxrpl/tx/transactors/check/CheckCreate.cpp @@ -195,7 +195,8 @@ CheckCreate::doApply() // A check counts against the reserve of the issuing account, but we // check the starting balance because we want to allow dipping into the // reserve to pay fees. - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + auto applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE if (auto const ret = checkInsufficientReserve( diff --git a/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp b/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp index ac5bf89d7d..d8cbed39ad 100644 --- a/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp +++ b/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp @@ -94,7 +94,9 @@ DelegateSet::doApply() auto const& permissions = ctx_.tx.getFieldArray(sfPermissions); if (permissions.empty()) return tecINTERNAL; // LCOV_EXCL_LINE - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + + auto applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE if (auto const ret = checkInsufficientReserve( diff --git a/src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp b/src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp index 2b3fd7abdd..4ef470a6c1 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowCancel.cpp @@ -178,10 +178,11 @@ EscrowCancel::doApply() auto const issuer = amount.getIssuer(); bool const createAsset = account == accountID_; + auto applyViewContext = ctx_.getApplyViewContext(); if (auto const ret = std::visit( [&](T const&) { return escrowUnlockApplyHelper( - ctx_.getApplyViewContext(), + applyViewContext, kParityRate, ctx_.view().rules().enabled(fixCleanup3_2_0) ? sle : slep, preFeeBalance_, diff --git a/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp b/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp index 202aefa98f..59f7ee2f12 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp @@ -436,7 +436,8 @@ EscrowCreate::doApply() STAmount const amount{ctx_.tx[sfAmount]}; auto const balance = sle->getFieldAmount(sfBalance).xrp(); - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + auto applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE if (auto const ret = diff --git a/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp b/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp index 5ededceffe..6b22e1b020 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp @@ -362,10 +362,11 @@ EscrowFinish::doApply() : kParityRate; auto const issuer = amount.getIssuer(); bool const createAsset = destID == accountID_; + auto applyViewContext = ctx_.getApplyViewContext(); if (auto const ret = std::visit( [&](T const&) { return escrowUnlockApplyHelper( - ctx_.getApplyViewContext(), + applyViewContext, lockedRate, sled, preFeeBalance_, diff --git a/src/libxrpl/tx/transactors/lending/LoanBrokerCoverWithdraw.cpp b/src/libxrpl/tx/transactors/lending/LoanBrokerCoverWithdraw.cpp index 674e6d1994..7f0b282be0 100644 --- a/src/libxrpl/tx/transactors/lending/LoanBrokerCoverWithdraw.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanBrokerCoverWithdraw.cpp @@ -197,14 +197,10 @@ LoanBrokerCoverWithdraw::doApply() view().update(broker); associateAsset(*broker, vaultAsset); + + auto applyViewContext = ctx_.getApplyViewContext(); return doWithdraw( - ctx_.getApplyViewContext(), - accountID_, - dstAcct, - brokerPseudoID, - preFeeBalance_, - amount, - j_); + applyViewContext, accountID_, dstAcct, brokerPseudoID, preFeeBalance_, amount, j_); } void diff --git a/src/libxrpl/tx/transactors/lending/LoanBrokerDelete.cpp b/src/libxrpl/tx/transactors/lending/LoanBrokerDelete.cpp index d597114ab3..40ae0ed802 100644 --- a/src/libxrpl/tx/transactors/lending/LoanBrokerDelete.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanBrokerDelete.cpp @@ -158,7 +158,9 @@ LoanBrokerDelete::doApply() view(), brokerPseudoID, accountID_, coverAvailable, j_, {}, WaiveTransferFee::Yes)) return ter; } - if (auto ter = removeEmptyHolding(ctx_.getApplyViewContext(), brokerPseudoID, vaultAsset, j_)) + + auto applyViewContext = ctx_.getApplyViewContext(); + if (auto ter = removeEmptyHolding(applyViewContext, brokerPseudoID, vaultAsset, j_)) return ter; auto brokerPseudoSLE = view().peek(keylet::account(brokerPseudoID)); diff --git a/src/libxrpl/tx/transactors/lending/LoanBrokerSet.cpp b/src/libxrpl/tx/transactors/lending/LoanBrokerSet.cpp index d41ca44e5a..ffe35dd5ea 100644 --- a/src/libxrpl/tx/transactors/lending/LoanBrokerSet.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanBrokerSet.cpp @@ -247,8 +247,10 @@ LoanBrokerSet::doApply() return maybePseudo.error(); // LCOV_EXCL_LINE auto& pseudo = *maybePseudo; auto pseudoId = pseudo->at(sfAccount); + + auto applyViewContext = ctx_.getApplyViewContext(); if (auto ter = addEmptyHolding( - ctx_.getApplyViewContext(), pseudoId, preFeeBalance_, sleVault->at(sfAsset), j_)) + applyViewContext, pseudoId, preFeeBalance_, sleVault->at(sfAsset), j_)) return ter; // Initialize data fields: diff --git a/src/libxrpl/tx/transactors/lending/LoanPay.cpp b/src/libxrpl/tx/transactors/lending/LoanPay.cpp index c025da6852..8d2aa466bb 100644 --- a/src/libxrpl/tx/transactors/lending/LoanPay.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanPay.cpp @@ -624,8 +624,9 @@ LoanPay::doApply() if (brokerPayee == accountID_) { // The broker may have deleted their holding. Recreate it if needed + auto applyViewContext = ctx_.getApplyViewContext(); if (auto const ter = addEmptyHolding( - ctx_.getApplyViewContext(), + applyViewContext, brokerPayee, brokerPayeeSle->at(sfBalance).value().xrp(), asset, diff --git a/src/libxrpl/tx/transactors/lending/LoanSet.cpp b/src/libxrpl/tx/transactors/lending/LoanSet.cpp index 4273fc27ea..6f9e587f1b 100644 --- a/src/libxrpl/tx/transactors/lending/LoanSet.cpp +++ b/src/libxrpl/tx/transactors/lending/LoanSet.cpp @@ -538,12 +538,9 @@ LoanSet::doApply() borrower == accountID_ || borrower == counterparty, "xrpl::LoanSet::doApply", "borrower signed transaction"); + auto applyViewContext = ctx_.getApplyViewContext(); if (auto const ter = addEmptyHolding( - ctx_.getApplyViewContext(), - borrower, - borrowerSle->at(sfBalance).value().xrp(), - vaultAsset, - j_); + applyViewContext, borrower, borrowerSle->at(sfBalance).value().xrp(), vaultAsset, j_); ter && ter != tecDUPLICATE) { // ignore tecDUPLICATE. That means the holding already exists, and @@ -566,7 +563,7 @@ LoanSet::doApply() "broker owner signed transaction"); if (auto const ter = addEmptyHolding( - ctx_.getApplyViewContext(), + applyViewContext, brokerOwner, brokerOwnerSle->at(sfBalance).value().xrp(), vaultAsset, diff --git a/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp b/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp index c482c034cc..d408eaa324 100644 --- a/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp +++ b/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp @@ -152,6 +152,7 @@ DepositPreauth::preclaim(PreclaimContext const& ctx) TER DepositPreauth::doApply() { + auto applyViewContext = ctx_.getApplyViewContext(); if (ctx_.tx.isFieldPresent(sfAuthorize)) { auto const sleOwner = view().peek(keylet::account(accountID_)); @@ -161,7 +162,7 @@ DepositPreauth::doApply() // A preauth counts against the reserve of the issuing account, but we // check the starting balance because we want to allow dipping into the // reserve to pay fees. - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE if (auto const ret = checkInsufficientReserve( @@ -209,7 +210,7 @@ DepositPreauth::doApply() // A preauth counts against the reserve of the issuing account, but we // check the starting balance because we want to allow dipping into the // reserve to pay fees. - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE if (auto const ret = checkInsufficientReserve( diff --git a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp index 7d9f109cf1..220bfde71c 100644 --- a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp +++ b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp @@ -203,7 +203,8 @@ PaymentChannelCreate::doApply() // Deduct owner's balance, increment owner count (*sle)[sfBalance] = (*sle)[sfBalance] - ctx_.tx[sfAmount]; - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + auto applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE adjustOwnerCount(ctx_.view(), sle, *sponsorSle, 1, ctx_.journal); diff --git a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelFund.cpp b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelFund.cpp index a94cdd4fe9..305857fc39 100644 --- a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelFund.cpp +++ b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelFund.cpp @@ -90,7 +90,8 @@ PaymentChannelFund::doApply() { // Check reserve and funds availability auto const balance = (*sle)[sfBalance]; - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + auto applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE if (auto const ret = diff --git a/src/libxrpl/tx/transactors/token/MPTokenAuthorize.cpp b/src/libxrpl/tx/transactors/token/MPTokenAuthorize.cpp index 59020f6104..b5862cc3b2 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenAuthorize.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenAuthorize.cpp @@ -143,8 +143,9 @@ TER MPTokenAuthorize::doApply() { auto const& tx = ctx_.tx; + auto applyViewContext = ctx_.getApplyViewContext(); return authorizeMPToken( - ctx_.getApplyViewContext(), + applyViewContext, preFeeBalance_, tx[sfMPTokenIssuanceID], accountID_, diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp index 3235638b75..bb65225f41 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp @@ -104,7 +104,7 @@ MPTokenIssuanceCreate::preflight(PreflightContext const& ctx) std::expected MPTokenIssuanceCreate::create( - ApplyViewContext&& ctx, + ApplyViewContext& ctx, beast::Journal journal, MPTCreateArgs const& args) { @@ -116,7 +116,7 @@ MPTokenIssuanceCreate::create( SLE::pointer sponsorSle; if (!isPseudoAccount(acct)) { - auto sle = getTxReserveSponsor({.view = ctx.view, .tx = ctx.tx}); + auto sle = getTxReserveSponsor(ctx); if (!sle) return std::unexpected(sle.error()); sponsorSle = std::move(*sle); @@ -197,8 +197,9 @@ TER MPTokenIssuanceCreate::doApply() { auto const& tx = ctx_.tx; + auto applyViewContext = ctx_.getApplyViewContext(); auto const result = create( - ctx_.getApplyViewContext(), + applyViewContext, j_, { .priorBalance = preFeeBalance_, diff --git a/src/libxrpl/tx/transactors/token/TrustSet.cpp b/src/libxrpl/tx/transactors/token/TrustSet.cpp index d97fb14e16..53085e34ff 100644 --- a/src/libxrpl/tx/transactors/token/TrustSet.cpp +++ b/src/libxrpl/tx/transactors/token/TrustSet.cpp @@ -327,7 +327,9 @@ TrustSet::doApply() // but the incremental reserve for the trust line as // well. A person with no intention of using the gateway // could use the extra XRP for their own purposes. - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); + + auto applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = getTxReserveSponsor(applyViewContext); if (!sponsorSle) return sponsorSle.error(); // LCOV_EXCL_LINE diff --git a/src/libxrpl/tx/transactors/vault/VaultClawback.cpp b/src/libxrpl/tx/transactors/vault/VaultClawback.cpp index f5ff6d2aa5..e77acdc81c 100644 --- a/src/libxrpl/tx/transactors/vault/VaultClawback.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultClawback.cpp @@ -399,8 +399,9 @@ VaultClawback::doApply() // Keep MPToken if holder is the vault owner. if (holder != vault->at(sfOwner)) { + auto applyViewContext = ctx_.getApplyViewContext(); if (auto const ter = - removeEmptyHolding(ctx_.getApplyViewContext(), holder, sharesDestroyed.asset(), j_); + removeEmptyHolding(applyViewContext, holder, sharesDestroyed.asset(), j_); isTesSuccess(ter)) { JLOG(j_.debug()) // diff --git a/src/libxrpl/tx/transactors/vault/VaultCreate.cpp b/src/libxrpl/tx/transactors/vault/VaultCreate.cpp index 755991d659..073a37eff8 100644 --- a/src/libxrpl/tx/transactors/vault/VaultCreate.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultCreate.cpp @@ -146,6 +146,7 @@ VaultCreate::doApply() // we can consider downgrading them to `tef` or `tem`. auto const& tx = ctx_.tx; + auto applyViewContext = ctx_.getApplyViewContext(); auto const sequence = tx.getSeqValue(); auto const owner = view().peek(keylet::account(accountID_)); if (owner == nullptr) @@ -167,7 +168,7 @@ VaultCreate::doApply() AccountID const pseudoId = pseudo->at(sfAccount); auto const asset = tx[sfAsset]; - if (auto ter = addEmptyHolding(ctx_.getApplyViewContext(), pseudoId, preFeeBalance_, asset, j_); + if (auto ter = addEmptyHolding(applyViewContext, pseudoId, preFeeBalance_, asset, j_); !isTesSuccess(ter)) return ter; @@ -197,7 +198,7 @@ VaultCreate::doApply() : keylet::line(pseudoId, asset.get()).key; }(); auto const maybeShare = MPTokenIssuanceCreate::create( - ctx_.getApplyViewContext(), + applyViewContext, j_, { .priorBalance = std::nullopt, @@ -244,7 +245,7 @@ VaultCreate::doApply() // Explicitly create MPToken for the vault owner if (auto const err = authorizeMPToken( - ctx_.getApplyViewContext(), preFeeBalance_, mptIssuanceID, accountID_, ctx_.journal); + applyViewContext, preFeeBalance_, mptIssuanceID, accountID_, ctx_.journal); !isTesSuccess(err)) return err; @@ -252,7 +253,7 @@ VaultCreate::doApply() if (tx.isFlag(tfVaultPrivate)) { if (auto const err = authorizeMPToken( - ctx_.getApplyViewContext(), + applyViewContext, preFeeBalance_, mptIssuanceID, pseudoId, diff --git a/src/libxrpl/tx/transactors/vault/VaultDelete.cpp b/src/libxrpl/tx/transactors/vault/VaultDelete.cpp index 69c9cfa72b..12191bb8d7 100644 --- a/src/libxrpl/tx/transactors/vault/VaultDelete.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultDelete.cpp @@ -88,13 +88,14 @@ TER VaultDelete::doApply() { auto const vault = view().peek(keylet::vault(ctx_.tx[sfVaultID])); + auto applyViewContext = ctx_.getApplyViewContext(); if (!vault) return tefINTERNAL; // LCOV_EXCL_LINE // Destroy the asset holding. auto asset = vault->at(sfAsset); - if (auto ter = removeEmptyHolding(ctx_.getApplyViewContext(), vault->at(sfAccount), asset, j_); + if (auto ter = removeEmptyHolding(applyViewContext, vault->at(sfAccount), asset, j_); !isTesSuccess(ter)) return ter; @@ -123,8 +124,8 @@ VaultDelete::doApply() // Try to remove MPToken for vault shares for the vault owner if it exists. if (auto const mptoken = view().peek(keylet::mptoken(shareMPTID, accountID_))) { - if (auto const ter = removeEmptyHolding( - ctx_.getApplyViewContext(), accountID_, MPTIssue(shareMPTID), j_); + if (auto const ter = + removeEmptyHolding(applyViewContext, accountID_, MPTIssue(shareMPTID), j_); !isTesSuccess(ter)) { // LCOV_EXCL_START diff --git a/src/libxrpl/tx/transactors/vault/VaultDeposit.cpp b/src/libxrpl/tx/transactors/vault/VaultDeposit.cpp index 78a1c11df8..569e8d6983 100644 --- a/src/libxrpl/tx/transactors/vault/VaultDeposit.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultDeposit.cpp @@ -187,6 +187,7 @@ VaultDeposit::doApply() { bool const fix320Enabled = view().rules().enabled(fixCleanup3_2_0); auto const vault = view().peek(keylet::vault(ctx_.tx[sfVaultID])); + auto applyViewContext = ctx_.getApplyViewContext(); if (!vault) return tefINTERNAL; // LCOV_EXCL_LINE auto const vaultAsset = vault->at(sfAsset); @@ -221,7 +222,7 @@ VaultDeposit::doApply() if (vault->isFlag(lsfVaultPrivate) && accountID_ != vault->at(sfOwner)) { if (auto const err = enforceMPTokenAuthorization( - ctx_.getApplyViewContext(), mptIssuanceID, accountID_, preFeeBalance_, j_); + applyViewContext, mptIssuanceID, accountID_, preFeeBalance_, j_); !isTesSuccess(err)) return err; } @@ -231,7 +232,7 @@ VaultDeposit::doApply() if (!view().exists(keylet::mptoken(mptIssuanceID, accountID_))) { if (auto const err = authorizeMPToken( - ctx_.getApplyViewContext(), + applyViewContext, preFeeBalance_, mptIssuanceID->value(), accountID_, @@ -247,7 +248,7 @@ VaultDeposit::doApply() XRPL_ASSERT( accountID_ == vault->at(sfOwner), "xrpl::VaultDeposit::doApply : account is owner"); if (auto const err = authorizeMPToken( - ctx_.getApplyViewContext(), + applyViewContext, preFeeBalance_, // priorBalance mptIssuanceID->value(), // mptIssuanceID sleIssuance->at(sfIssuer), // account diff --git a/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp b/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp index 9955fbb02d..209b5d4273 100644 --- a/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp +++ b/src/libxrpl/tx/transactors/vault/VaultWithdraw.cpp @@ -176,6 +176,7 @@ TER VaultWithdraw::doApply() { auto const vault = view().peek(keylet::vault(ctx_.tx[sfVaultID])); + auto applyViewContext = ctx_.getApplyViewContext(); if (!vault) return tefINTERNAL; // LCOV_EXCL_LINE @@ -337,8 +338,8 @@ VaultWithdraw::doApply() // Keep MPToken if holder is the vault owner. if (accountID_ != vault->at(sfOwner)) { - if (auto const ter = removeEmptyHolding( - ctx_.getApplyViewContext(), accountID_, sharesRedeemed.asset(), j_); + if (auto const ter = + removeEmptyHolding(applyViewContext, accountID_, sharesRedeemed.asset(), j_); isTesSuccess(ter)) { JLOG(j_.debug()) // @@ -365,13 +366,7 @@ VaultWithdraw::doApply() associateAsset(*vault, vaultAsset); return doWithdraw( - ctx_.getApplyViewContext(), - accountID_, - dstAcct, - vaultAccount, - preFeeBalance_, - assetsWithdrawn, - j_); + applyViewContext, accountID_, dstAcct, vaultAccount, preFeeBalance_, assetsWithdrawn, j_); } void