From 908de5dcef6f3867a1b3bdfd467213dc7737e1f2 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Mon, 29 Jun 2026 20:58:51 -0400 Subject: [PATCH] fix more build issues --- .../xrpl/ledger/helpers/AccountRootHelpers.h | 4 +-- include/xrpl/ledger/helpers/EscrowHelpers.h | 20 +++++------- src/libxrpl/ledger/View.cpp | 7 ++--- .../ledger/helpers/AccountRootHelpers.cpp | 4 +-- .../ledger/helpers/RippleStateHelpers.cpp | 5 +-- .../tx/transactors/Sponsor/SponsorshipSet.cpp | 13 ++++---- .../tx/transactors/account/SignerListSet.cpp | 11 +++---- .../tx/transactors/check/CheckCreate.cpp | 11 +++---- .../tx/transactors/delegate/DelegateSet.cpp | 11 +++---- .../tx/transactors/escrow/EscrowCreate.cpp | 11 +++---- .../tx/transactors/escrow/EscrowFinish.cpp | 4 --- .../tx/transactors/payment/DepositPreauth.cpp | 22 ++++++------- .../payment_channel/PaymentChannelCreate.cpp | 16 +++++----- .../payment_channel/PaymentChannelFund.cpp | 7 ++--- .../token/MPTokenIssuanceCreate.cpp | 5 +-- src/libxrpl/tx/transactors/token/TrustSet.cpp | 31 +++++++++---------- 16 files changed, 77 insertions(+), 105 deletions(-) diff --git a/include/xrpl/ledger/helpers/AccountRootHelpers.h b/include/xrpl/ledger/helpers/AccountRootHelpers.h index ffb39657e3..42536001b6 100644 --- a/include/xrpl/ledger/helpers/AccountRootHelpers.h +++ b/include/xrpl/ledger/helpers/AccountRootHelpers.h @@ -140,7 +140,7 @@ ownerCount(SLE::const_ref sle, beast::Journal j, std::int32_t ownerCountAdj = 0) */ void adjustOwnerCount( - ApplyViewContext& ctx, + ApplyViewContext const& ctx, std::int32_t ownerCountAdj, beast::Journal j = beast::Journal{beast::Journal::getNullSink()}); @@ -178,7 +178,7 @@ adjustOwnerCount( */ void adjustOwnerCountObj( - ApplyViewContext& ctx, + ApplyViewContext const& ctx, SLE::ref objectSle, std::int32_t ownerCountAdj, beast::Journal j = beast::Journal{beast::Journal::getNullSink()}); diff --git a/include/xrpl/ledger/helpers/EscrowHelpers.h b/include/xrpl/ledger/helpers/EscrowHelpers.h index 7214701f71..1d21d95819 100644 --- a/include/xrpl/ledger/helpers/EscrowHelpers.h +++ b/include/xrpl/ledger/helpers/EscrowHelpers.h @@ -60,12 +60,10 @@ escrowUnlockApplyHelper( if (!view.exists(trustLineKey) && createAsset) { // Can the account cover the trust line's reserve? - auto const sponsorSle = getTxReserveSponsor(ctx); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const sponsorSle = ctx.reserveContext.sponsorSle; if (auto const ret = checkInsufficientReserve( - view, ctx.tx, sleDest, xrpBalance, *sponsorSle, 1, 0, journal); + view, ctx.tx, sleDest, xrpBalance, sponsorSle, 1, 0, journal); !isTesSuccess(ret)) { JLOG(journal.trace()) << "Trust line does not exist. " @@ -93,7 +91,7 @@ escrowUnlockApplyHelper( Issue(currency, receiver), // limit of zero 0, // quality in 0, // quality out - *sponsorSle, // sponsor + sponsorSle, // sponsor journal); // journal !isTesSuccess(ter)) { @@ -190,25 +188,23 @@ escrowUnlockApplyHelper( auto const mptKeylet = keylet::mptoken(issuanceKey.key, receiver); if (!view.exists(mptKeylet) && createAsset && !receiverIssuer) { - auto const sponsorSle = getTxReserveSponsor(ctx); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const sponsorSle = ctx.reserveContext.sponsorSle; if (auto const ret = checkInsufficientReserve( - view, ctx.tx, sleDest, xrpBalance, *sponsorSle, 1, 0, journal); + view, ctx.tx, sleDest, xrpBalance, sponsorSle, 1, 0, journal); !isTesSuccess(ret)) return ret; - if (auto const ter = createMPToken(view, mptID, receiver, *sponsorSle, 0); + if (auto const ter = createMPToken(view, mptID, receiver, sponsorSle, 0); !isTesSuccess(ter)) { return ter; // LCOV_EXCL_LINE } // update owner count. - adjustOwnerCount(view, sleDest, *sponsorSle, 1, journal); + adjustOwnerCount(view, sleDest, sponsorSle, 1, journal); auto mptSle = view.peek(mptKeylet); - addSponsorToLedgerEntry(mptSle, *sponsorSle); + addSponsorToLedgerEntry(mptSle, sponsorSle); } if (!view.exists(mptKeylet) && !receiverIssuer) diff --git a/src/libxrpl/ledger/View.cpp b/src/libxrpl/ledger/View.cpp index 8be1b5c02f..7b70a837eb 100644 --- a/src/libxrpl/ledger/View.cpp +++ b/src/libxrpl/ledger/View.cpp @@ -475,14 +475,11 @@ doWithdraw( // LCOV_EXCL_STOP } - auto const sponsorSle = getTxReserveSponsor(ctx); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const sponsorSle = ctx.reserveContext.sponsorSle; // Move the funds directly from the broker's pseudo-account to the // dstAcct - return accountSend( - ctx.view, sourceAcct, dstAcct, amount, j, *sponsorSle, WaiveTransferFee::Yes); + return accountSend(ctx.view, sourceAcct, dstAcct, amount, j, sponsorSle, WaiveTransferFee::Yes); } TER diff --git a/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp b/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp index badb333801..92ef487aa2 100644 --- a/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp +++ b/src/libxrpl/ledger/helpers/AccountRootHelpers.cpp @@ -274,7 +274,7 @@ adjustOwnerCount( } void -adjustOwnerCount(ApplyViewContext& ctx, std::int32_t ownerCountAdj, beast::Journal j) +adjustOwnerCount(ApplyViewContext const& ctx, std::int32_t ownerCountAdj, beast::Journal j) { return adjustOwnerCount(ctx.view, ctx.reserveContext, ownerCountAdj, j); } @@ -321,7 +321,7 @@ adjustOwnerCount( void adjustOwnerCountObj( - ApplyViewContext& ctx, + ApplyViewContext const& ctx, SLE::ref objectSle, std::int32_t ownerCountAdj, beast::Journal j) diff --git a/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp b/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp index 7289aceba4..d3f91f8c64 100644 --- a/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp +++ b/src/libxrpl/ledger/helpers/RippleStateHelpers.cpp @@ -666,10 +666,7 @@ addEmptyHolding( SLE::pointer sponsorSle; if (!isPseudoAccount(sleDst)) { - auto sle = getTxReserveSponsor(ctx); - if (!sle) - return sle.error(); // LCOV_EXCL_LINE - sponsorSle = std::move(*sle); + sponsorSle = ctx.reserveContext.sponsorSle; } // Can the account cover the trust line reserve ? diff --git a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp index e578ae7ac3..1c1d05693c 100644 --- a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp +++ b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp @@ -203,9 +203,8 @@ 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()); - if (!reserveSponsorAccSle) - return reserveSponsorAccSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const reserveSponsorAccSle = applyViewContext.reserveContext.sponsorSle; if (!sponsorshipSle) { @@ -228,7 +227,7 @@ SponsorshipSet::doApply() ctx_.tx, sponsorAccSle, STAmount{(*sponsorAccSle)[sfBalance]}.xrp(), - *reserveSponsorAccSle, + reserveSponsorAccSle, 1, 0, ctx_.journal); @@ -262,8 +261,8 @@ SponsorshipSet::doApply() (*newSle)[sfSponseeNode] = *sponseePage; // NOLINTNEXTLINE(readability-suspicious-call-argument) - adjustOwnerCount(view(), sponsorAccSle, *reserveSponsorAccSle, 1, ctx_.journal); - addSponsorToLedgerEntry(newSle, *reserveSponsorAccSle); + adjustOwnerCount(view(), sponsorAccSle, reserveSponsorAccSle, 1, ctx_.journal); + addSponsorToLedgerEntry(newSle, reserveSponsorAccSle); ctx_.view().insert(newSle); return tesSUCCESS; @@ -297,7 +296,7 @@ SponsorshipSet::doApply() ctx_.tx, sponsorAccSle, STAmount{(*sponsorAccSle)[sfBalance]}.xrp(), - *reserveSponsorAccSle, + reserveSponsorAccSle, 0, 0, ctx_.journal); diff --git a/src/libxrpl/tx/transactors/account/SignerListSet.cpp b/src/libxrpl/tx/transactors/account/SignerListSet.cpp index 8a24d42c8b..50a0907421 100644 --- a/src/libxrpl/tx/transactors/account/SignerListSet.cpp +++ b/src/libxrpl/tx/transactors/account/SignerListSet.cpp @@ -322,15 +322,14 @@ 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()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; if (auto const ret = checkInsufficientReserve( ctx_.view(), ctx_.tx, sle, preFeeBalance_, - *sponsorSle, + sponsorSle, kAddedOwnerCount, 0, ctx_.journal); @@ -357,8 +356,8 @@ SignerListSet::replaceSignerList() // If we succeeded, the new entry counts against the // creator's reserve. - adjustOwnerCount(view(), sle, *sponsorSle, kAddedOwnerCount, viewJ); - addSponsorToLedgerEntry(signerList, *sponsorSle); + adjustOwnerCount(view(), sle, sponsorSle, kAddedOwnerCount, viewJ); + addSponsorToLedgerEntry(signerList, sponsorSle); return tesSUCCESS; } diff --git a/src/libxrpl/tx/transactors/check/CheckCreate.cpp b/src/libxrpl/tx/transactors/check/CheckCreate.cpp index d2281ec3ae..58860ce676 100644 --- a/src/libxrpl/tx/transactors/check/CheckCreate.cpp +++ b/src/libxrpl/tx/transactors/check/CheckCreate.cpp @@ -195,11 +195,10 @@ 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()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; if (auto const ret = checkInsufficientReserve( - view(), ctx_.tx, sle, preFeeBalance_, *sponsorSle, 1, 0, ctx_.journal); + view(), ctx_.tx, sle, preFeeBalance_, sponsorSle, 1, 0, ctx_.journal); !isTesSuccess(ret)) return ret; // Note that we use the value from the sequence or ticket as the @@ -255,8 +254,8 @@ CheckCreate::doApply() } // If we succeeded, the new entry counts against the creator's reserve. - adjustOwnerCount(view(), sle, *sponsorSle, 1, viewJ); - addSponsorToLedgerEntry(sleCheck, *sponsorSle); + adjustOwnerCount(view(), sle, sponsorSle, 1, viewJ); + addSponsorToLedgerEntry(sleCheck, sponsorSle); return tesSUCCESS; } diff --git a/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp b/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp index ac5bf89d7d..d78c69613c 100644 --- a/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp +++ b/src/libxrpl/tx/transactors/delegate/DelegateSet.cpp @@ -94,11 +94,10 @@ DelegateSet::doApply() auto const& permissions = ctx_.tx.getFieldArray(sfPermissions); if (permissions.empty()) return tecINTERNAL; // LCOV_EXCL_LINE - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; if (auto const ret = checkInsufficientReserve( - view(), ctx_.tx, sleOwner, preFeeBalance_, *sponsorSle, 1, 0, ctx_.journal); + view(), ctx_.tx, sleOwner, preFeeBalance_, sponsorSle, 1, 0, ctx_.journal); !isTesSuccess(ret)) return ret; @@ -128,8 +127,8 @@ DelegateSet::doApply() (*sle)[sfDestinationNode] = *destPage; ctx_.view().insert(sle); - adjustOwnerCount(ctx_.view(), sleOwner, *sponsorSle, 1, ctx_.journal); - addSponsorToLedgerEntry(sle, *sponsorSle); + adjustOwnerCount(ctx_.view(), sleOwner, sponsorSle, 1, ctx_.journal); + addSponsorToLedgerEntry(sle, sponsorSle); return tesSUCCESS; } diff --git a/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp b/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp index 202aefa98f..06a6e48016 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowCreate.cpp @@ -436,11 +436,10 @@ EscrowCreate::doApply() STAmount const amount{ctx_.tx[sfAmount]}; auto const balance = sle->getFieldAmount(sfBalance).xrp(); - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; if (auto const ret = - checkInsufficientReserve(ctx_.view(), ctx_.tx, sle, balance, *sponsorSle, 1, 0, j_); + checkInsufficientReserve(ctx_.view(), ctx_.tx, sle, balance, sponsorSle, 1, 0, j_); !isTesSuccess(ret)) return ret; @@ -541,8 +540,8 @@ EscrowCreate::doApply() } // increment owner count - adjustOwnerCount(ctx_.view(), sle, *sponsorSle, 1, ctx_.journal); - addSponsorToLedgerEntry(slep, *sponsorSle); + adjustOwnerCount(ctx_.view(), sle, sponsorSle, 1, ctx_.journal); + addSponsorToLedgerEntry(slep, sponsorSle); ctx_.view().update(sle); return tesSUCCESS; } diff --git a/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp b/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp index 5ededceffe..8739b9cd87 100644 --- a/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp +++ b/src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp @@ -224,10 +224,6 @@ EscrowFinish::preclaim(PreclaimContext const& ctx) } } - auto const sponsorSle = getTxReserveSponsor(ctx.view, ctx.tx); - if (!sponsorSle) - return sponsorSle.error(); - return tesSUCCESS; } diff --git a/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp b/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp index c482c034cc..2b07e5a9d9 100644 --- a/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp +++ b/src/libxrpl/tx/transactors/payment/DepositPreauth.cpp @@ -161,11 +161,10 @@ 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()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; if (auto const ret = checkInsufficientReserve( - view(), ctx_.tx, sleOwner, preFeeBalance_, *sponsorSle, 1, 0, j_); + view(), ctx_.tx, sleOwner, preFeeBalance_, sponsorSle, 1, 0, j_); !isTesSuccess(ret)) return ret; @@ -191,8 +190,8 @@ DepositPreauth::doApply() slePreauth->setFieldU64(sfOwnerNode, *page); // If we succeeded, the new entry counts against the creator's reserve. - adjustOwnerCount(view(), sleOwner, *sponsorSle, 1, j_); - addSponsorToLedgerEntry(slePreauth, *sponsorSle); + adjustOwnerCount(view(), sleOwner, sponsorSle, 1, j_); + addSponsorToLedgerEntry(slePreauth, sponsorSle); } else if (ctx_.tx.isFieldPresent(sfUnauthorize)) { @@ -209,11 +208,10 @@ 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()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; if (auto const ret = checkInsufficientReserve( - view(), ctx_.tx, sleOwner, preFeeBalance_, *sponsorSle, 1, 0, j_); + view(), ctx_.tx, sleOwner, preFeeBalance_, sponsorSle, 1, 0, j_); !isTesSuccess(ret)) return ret; @@ -253,8 +251,8 @@ DepositPreauth::doApply() slePreauth->setFieldU64(sfOwnerNode, *page); // If we succeeded, the new entry counts against the creator's reserve. - adjustOwnerCount(view(), sleOwner, *sponsorSle, 1, j_); - addSponsorToLedgerEntry(slePreauth, *sponsorSle); + adjustOwnerCount(view(), sleOwner, sponsorSle, 1, j_); + addSponsorToLedgerEntry(slePreauth, sponsorSle); } else if (ctx_.tx.isFieldPresent(sfUnauthorizeCredentials)) { diff --git a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp index 7d9f109cf1..d3c819d6b7 100644 --- a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp +++ b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelCreate.cpp @@ -136,11 +136,10 @@ PaymentChannelCreate::doApply() if (ctx_.view().rules().enabled(featureSponsor)) { - auto const sponsorSle = getTxReserveSponsor(ctx_.view(), ctx_.tx); - if (!sponsorSle) - return sponsorSle.error(); + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; if (auto const ret = checkInsufficientReserve( - ctx_.view(), ctx_.tx, sle, STAmount{preFeeBalance_}, *sponsorSle, 1, 0, j_); + ctx_.view(), ctx_.tx, sle, STAmount{preFeeBalance_}, sponsorSle, 1, 0, j_); !isTesSuccess(ret)) return ret; if (auto const ret = checkInsufficientReserve( @@ -203,11 +202,10 @@ PaymentChannelCreate::doApply() // Deduct owner's balance, increment owner count (*sle)[sfBalance] = (*sle)[sfBalance] - ctx_.tx[sfAmount]; - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE - adjustOwnerCount(ctx_.view(), sle, *sponsorSle, 1, ctx_.journal); - addSponsorToLedgerEntry(slep, *sponsorSle); + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; + adjustOwnerCount(ctx_.view(), sle, sponsorSle, 1, ctx_.journal); + addSponsorToLedgerEntry(slep, sponsorSle); ctx_.view().update(sle); return tesSUCCESS; diff --git a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelFund.cpp b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelFund.cpp index a94cdd4fe9..473fecf009 100644 --- a/src/libxrpl/tx/transactors/payment_channel/PaymentChannelFund.cpp +++ b/src/libxrpl/tx/transactors/payment_channel/PaymentChannelFund.cpp @@ -90,11 +90,10 @@ PaymentChannelFund::doApply() { // Check reserve and funds availability auto const balance = (*sle)[sfBalance]; - auto const sponsorSle = getTxReserveSponsor(ctx_.getApplyViewContext()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; if (auto const ret = - checkInsufficientReserve(ctx_.view(), ctx_.tx, sle, balance, *sponsorSle, 0, 0, j_); + checkInsufficientReserve(ctx_.view(), ctx_.tx, sle, balance, sponsorSle, 0, 0, j_); !isTesSuccess(ret)) return ret; diff --git a/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp b/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp index c0339c882a..b61ae93e53 100644 --- a/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp +++ b/src/libxrpl/tx/transactors/token/MPTokenIssuanceCreate.cpp @@ -116,10 +116,7 @@ MPTokenIssuanceCreate::create( SLE::pointer sponsorSle; if (!isPseudoAccount(acct)) { - auto sle = getTxReserveSponsor(ctx); - if (!sle) - return std::unexpected(sle.error()); - sponsorSle = std::move(*sle); + sponsorSle = ctx.reserveContext.sponsorSle; } if (args.priorBalance) diff --git a/src/libxrpl/tx/transactors/token/TrustSet.cpp b/src/libxrpl/tx/transactors/token/TrustSet.cpp index d97fb14e16..7962321687 100644 --- a/src/libxrpl/tx/transactors/token/TrustSet.cpp +++ b/src/libxrpl/tx/transactors/token/TrustSet.cpp @@ -327,16 +327,15 @@ 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()); - if (!sponsorSle) - return sponsorSle.error(); // LCOV_EXCL_LINE + auto const applyViewContext = ctx_.getApplyViewContext(); + auto const sponsorSle = applyViewContext.reserveContext.sponsorSle; - std::uint32_t const uOwnerCount = ownerCount(*sponsorSle ? *sponsorSle : sle, j_); + std::uint32_t const uOwnerCount = ownerCount(sponsorSle ? sponsorSle : sle, j_); // The "free-tier" shortcut (ownerCount < 2) only applies when there is no sponsor. // With any sponsor on the tx, the sponsor must cover the reserve (via balance or // prefunded budget), so the reserve check always runs. - bool const freeTrustLine = uOwnerCount < 2 && !*sponsorSle; + bool const freeTrustLine = uOwnerCount < 2 && !sponsorSle; std::uint32_t const uQualityIn(bQualityIn ? ctx_.tx.getFieldU32(sfQualityIn) : 0); std::uint32_t uQualityOut(bQualityOut ? ctx_.tx.getFieldU32(sfQualityOut) : 0); @@ -538,15 +537,15 @@ TrustSet::doApply() // For PreFunded sponsors, we need to check if there are sufficient reserves before // calling adjustOwnerCount(). if (auto const ret = checkInsufficientReserve( - view(), ctx_.tx, sleLowAccount, preFeeBalance_, *sponsorSle, 1, 0, j_); - *sponsorSle && !isTesSuccess(ret)) + view(), ctx_.tx, sleLowAccount, preFeeBalance_, sponsorSle, 1, 0, j_); + sponsorSle && !isTesSuccess(ret)) return tecINSUF_RESERVE_LINE; // Set reserve for low account. - adjustOwnerCount(view(), sleLowAccount, *sponsorSle, 1, viewJ); + adjustOwnerCount(view(), sleLowAccount, sponsorSle, 1, viewJ); uFlagsOut |= lsfLowReserve; - addSponsorToLedgerEntry(sleRippleState, *sponsorSle, sfLowSponsor); + addSponsorToLedgerEntry(sleRippleState, sponsorSle, sfLowSponsor); if (!bHigh) bReserveIncrease = true; @@ -567,15 +566,15 @@ TrustSet::doApply() // For PreFunded sponsors, we need to check if there are sufficient reserves before // calling adjustOwnerCount(). if (auto const ret = checkInsufficientReserve( - view(), ctx_.tx, sleHighAccount, preFeeBalance_, *sponsorSle, 1, 0, j_); - *sponsorSle && !isTesSuccess(ret)) + view(), ctx_.tx, sleHighAccount, preFeeBalance_, sponsorSle, 1, 0, j_); + sponsorSle && !isTesSuccess(ret)) return tecINSUF_RESERVE_LINE; // Set reserve for high account. - adjustOwnerCount(view(), sleHighAccount, *sponsorSle, 1, viewJ); + adjustOwnerCount(view(), sleHighAccount, sponsorSle, 1, viewJ); uFlagsOut |= lsfHighReserve; - addSponsorToLedgerEntry(sleRippleState, *sponsorSle, sfHighSponsor); + addSponsorToLedgerEntry(sleRippleState, sponsorSle, sfHighSponsor); if (bHigh) bReserveIncrease = true; @@ -602,7 +601,7 @@ TrustSet::doApply() // Reserve is not scaled by load. else if ( auto const ret = checkInsufficientReserve( - view(), ctx_.tx, sle, preFeeBalance_, *sponsorSle, 0, 0, j_); + view(), ctx_.tx, sle, preFeeBalance_, sponsorSle, 0, 0, j_); !freeTrustLine && bReserveIncrease && !isTesSuccess(ret)) { JLOG(j_.trace()) << "Delay transaction: Insufficent reserve to " @@ -633,7 +632,7 @@ TrustSet::doApply() } else if ( auto const ret = checkInsufficientReserve( - ctx_.view(), ctx_.tx, sle, preFeeBalance_, *sponsorSle, 1, 0, j_); + ctx_.view(), ctx_.tx, sle, preFeeBalance_, sponsorSle, 1, 0, j_); !freeTrustLine && !isTesSuccess(ret)) // Reserve is not scaled by load. { JLOG(j_.trace()) << "Delay transaction: Line does not exist. " @@ -668,7 +667,7 @@ TrustSet::doApply() saLimitAllow, // Limit for who is being charged. uQualityIn, uQualityOut, - *sponsorSle, + sponsorSle, viewJ); }