From 0240203060577aae0fa19a43e45ac27a6016ebdc Mon Sep 17 00:00:00 2001 From: Peter Chen <34582813+PeterChen13579@users.noreply.github.com> Date: Thu, 2 Jul 2026 08:41:11 -0700 Subject: [PATCH] fix STAmount (#7697) --- src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp index 4b2c214ea6..d5eb860677 100644 --- a/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp +++ b/src/libxrpl/tx/transactors/Sponsor/SponsorshipSet.cpp @@ -221,7 +221,7 @@ SponsorshipSet::doApply() if (feeAmount && (*feeAmount).xrp() > (*sponsorAccSle)[sfBalance]) return tecUNFUNDED; - auto sponsorBalanceAfterFee = STAmount{(*sponsorAccSle)[sfBalance]}; + STAmount sponsorBalanceAfterFee = (*sponsorAccSle)[sfBalance]; if (hasPositiveFeeAmount) sponsorBalanceAfterFee -= *feeAmount; @@ -229,7 +229,7 @@ SponsorshipSet::doApply() ctx_.view(), ctx_.tx, sponsorAccSle, - STAmount{sponsorBalanceAfterFee}.xrp(), + sponsorBalanceAfterFee.xrp(), *reserveSponsorAccSle, {.ownerCountDelta = 1}, ctx_.journal); @@ -238,6 +238,7 @@ SponsorshipSet::doApply() if (hasPositiveFeeAmount) { + // New object: FeeAmount starts absent, so deduct and record the full amount (*newSle)[sfFeeAmount] = *feeAmount; (*sponsorAccSle)[sfBalance] -= *feeAmount; } @@ -289,14 +290,14 @@ SponsorshipSet::doApply() // object. if (feeAmountDelta != beast::kZero) { - auto sponsorBalanceAfterFee = STAmount{(*sponsorAccSle)[sfBalance]}; - sponsorBalanceAfterFee -= STAmount{feeAmountDelta}; + STAmount sponsorBalanceAfterFee = (*sponsorAccSle)[sfBalance]; + sponsorBalanceAfterFee -= feeAmountDelta; if (auto const ret = checkInsufficientReserve( ctx_.view(), ctx_.tx, sponsorAccSle, - STAmount{sponsorBalanceAfterFee}.xrp(), + sponsorBalanceAfterFee.xrp(), *reserveSponsorAccSle, {}, ctx_.journal);