diff --git a/src/cpp/ripple/LedgerEntrySet.cpp b/src/cpp/ripple/LedgerEntrySet.cpp index 4c3891637..109638548 100644 --- a/src/cpp/ripple/LedgerEntrySet.cpp +++ b/src/cpp/ripple/LedgerEntrySet.cpp @@ -1383,8 +1383,15 @@ TER LedgerEntrySet::accountSend(const uint160& uSenderID, const uint160& uReceiv if (sleSender) { - sleSender->setFieldAmount(sfBalance, sleSender->getFieldAmount(sfBalance) - saAmount); - entryModify(sleSender); + if (sleSender->getFieldAmount(sfBalance) < saAmount) + { + terResult = isSetBit(mParams, tapOPEN_LEDGER) ? telFAILED_PROCESSING : tecFAILED_PROCESSING; + } + else + { + sleSender->setFieldAmount(sfBalance, sleSender->getFieldAmount(sfBalance) - saAmount); + entryModify(sleSender); + } } if (sleReceiver) diff --git a/src/cpp/ripple/RippleCalc.cpp b/src/cpp/ripple/RippleCalc.cpp index b3137aa64..f10c10e56 100644 --- a/src/cpp/ripple/RippleCalc.cpp +++ b/src/cpp/ripple/RippleCalc.cpp @@ -2322,7 +2322,7 @@ TER RippleCalc::calcNodeAccountFwd( saCurDeliverAct = std::min(saCurDeliverAct, psCur.saInReq-psCur.saInAct); // Limit XRP by available. No limit for non-XRP as issuer. - if (!uCurAccountID) + if (!uCurrencyID) saCurDeliverAct = std::min(saCurDeliverAct, lesActive.accountHolds(uCurAccountID, CURRENCY_XRP, ACCOUNT_XRP)); }