From c3dfc71104ff05ad66ea4147d480213f007f9499 Mon Sep 17 00:00:00 2001 From: Mayukha Vadari Date: Thu, 2 Jul 2026 17:05:02 -0400 Subject: [PATCH] more cleanup --- include/xrpl/ledger/helpers/EscrowHelpers.h | 8 ++++++-- src/libxrpl/ledger/helpers/TokenHelpers.cpp | 5 ++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/xrpl/ledger/helpers/EscrowHelpers.h b/include/xrpl/ledger/helpers/EscrowHelpers.h index b82dca3fe3..1efdeeb94c 100644 --- a/include/xrpl/ledger/helpers/EscrowHelpers.h +++ b/include/xrpl/ledger/helpers/EscrowHelpers.h @@ -84,8 +84,6 @@ escrowUnlockApplyHelper( STAmount initialBalance(issue); initialBalance.get().account = noAccount(); - // The ApplyViewContext overload derives the sponsor (XLS-68: only when - // sleDest is the tx.Account, which createAsset already guarantees). if (TER const ter = trustCreate( ctx, // apply-view context recvLow, // is dest low? @@ -201,6 +199,10 @@ escrowUnlockApplyHelper( !isTesSuccess(ret)) return ret; + // checked on `createAsset` instantiation + XRPL_ASSERT( + sleDest->getAccountID(sfAccount) == ctx.tx[sfAccount], + "EscrowHelpers::escrowUnlockApplyHelper : sleDest.Account == tx.Account"); auto const reserveCtx = ReserveContext::makeFromAccount(ctx.view, sleDest, ctx.txReserveContext.sponsorSle); @@ -211,6 +213,8 @@ escrowUnlockApplyHelper( // update owner count. increaseOwnerCount(ctx.view, reserveCtx, 1, journal); + auto mptSle = ctx.view.peek(mptKeylet); + addSponsorToLedgerEntry(mptSle, reserveCtx.sponsorSle); } if (!ctx.view.exists(mptKeylet) && !receiverIssuer) diff --git a/src/libxrpl/ledger/helpers/TokenHelpers.cpp b/src/libxrpl/ledger/helpers/TokenHelpers.cpp index bdc48ca83e..76fe3c8c72 100644 --- a/src/libxrpl/ledger/helpers/TokenHelpers.cpp +++ b/src/libxrpl/ledger/helpers/TokenHelpers.cpp @@ -699,6 +699,7 @@ directSendNoFeeIOU( auto const senderNoRippleFlag = bSenderHigh ? lsfHighNoRipple : lsfLowNoRipple; auto const senderFreezeFlag = bSenderHigh ? lsfHighFreeze : lsfLowFreeze; auto const receiverReserveFlag = bSenderHigh ? lsfLowReserve : lsfHighReserve; + auto const senderSle = view.peek(keylet::account(uSenderID)); // FIXME This NEEDS to be cleaned up and simplified. It's impossible // for anyone to understand. @@ -708,8 +709,7 @@ directSendNoFeeIOU( // Sender is zero or negative. && sleRippleState->isFlag(senderReserveFlag) // Sender reserve is set. - && sleRippleState->isFlag(senderNoRippleFlag) != - view.read(keylet::account(uSenderID))->isFlag(lsfDefaultRipple) && + && sleRippleState->isFlag(senderNoRippleFlag) != senderSle->isFlag(lsfDefaultRipple) && !sleRippleState->isFlag(senderFreezeFlag) && !sleRippleState->getFieldAmount(bSenderHigh ? sfHighLimit : sfLowLimit) // Sender trust limit is 0. @@ -722,7 +722,6 @@ directSendNoFeeIOU( // Clear the reserve of the sender, possibly delete the line! auto const currentSponsor = getLedgerEntryReserveSponsor( view, sleRippleState, !bSenderHigh ? sfLowSponsor : sfHighSponsor); - auto const senderSle = view.peek(keylet::account(uSenderID)); if (!senderSle) return tecINTERNAL; // LCOV_EXCL_LINE decreaseOwnerCount(