mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
Remove undefined behavior
* Taking the negative of a signed negative is UB, but taking the negative of an unsigned is not.
This commit is contained in:
committed by
Elliot Lee
parent
d275a2ab72
commit
6fcd654bee
@@ -2092,37 +2092,53 @@ public:
|
||||
|
||||
using namespace jtx;
|
||||
|
||||
Env env{*this, features};
|
||||
for (auto NumberSwitchOver : {false, true})
|
||||
{
|
||||
Env env{*this, features};
|
||||
if (NumberSwitchOver)
|
||||
env.enableFeature(fixUniversalNumber);
|
||||
else
|
||||
env.disableFeature(fixUniversalNumber);
|
||||
|
||||
auto const gw = Account{"gateway"};
|
||||
auto const alice = Account{"alice"};
|
||||
auto const bob = Account{"bob"};
|
||||
auto const USD = gw["USD"];
|
||||
auto const gw = Account{"gateway"};
|
||||
auto const alice = Account{"alice"};
|
||||
auto const bob = Account{"bob"};
|
||||
auto const USD = gw["USD"];
|
||||
|
||||
env.fund(XRP(10000), gw, alice, bob);
|
||||
env.fund(XRP(10000), gw, alice, bob);
|
||||
|
||||
env(rate(gw, 1.005));
|
||||
env(rate(gw, 1.005));
|
||||
|
||||
env(trust(alice, USD(1000)));
|
||||
env(trust(bob, USD(1000)));
|
||||
env(trust(gw, alice["USD"](50)));
|
||||
env(trust(alice, USD(1000)));
|
||||
env(trust(bob, USD(1000)));
|
||||
env(trust(gw, alice["USD"](50)));
|
||||
|
||||
env(pay(gw, bob, bob["USD"](1)));
|
||||
env(pay(alice, gw, USD(50)));
|
||||
env(pay(gw, bob, bob["USD"](1)));
|
||||
env(pay(alice, gw, USD(50)));
|
||||
|
||||
env(trust(gw, alice["USD"](0)));
|
||||
env(trust(gw, alice["USD"](0)));
|
||||
|
||||
env(offer(alice, USD(50), XRP(150000)));
|
||||
env(offer(bob, XRP(100), USD(0.1)));
|
||||
env(offer(alice, USD(50), XRP(150000)));
|
||||
env(offer(bob, XRP(100), USD(0.1)));
|
||||
|
||||
auto jrr = ledgerEntryState(env, alice, gw, "USD");
|
||||
BEAST_EXPECT(
|
||||
jrr[jss::node][sfBalance.fieldName][jss::value] ==
|
||||
"49.96666666666667");
|
||||
jrr = ledgerEntryState(env, bob, gw, "USD");
|
||||
BEAST_EXPECT(
|
||||
jrr[jss::node][sfBalance.fieldName][jss::value] ==
|
||||
"-0.9665000000333333");
|
||||
auto jrr = ledgerEntryState(env, alice, gw, "USD");
|
||||
BEAST_EXPECT(
|
||||
jrr[jss::node][sfBalance.fieldName][jss::value] ==
|
||||
"49.96666666666667");
|
||||
jrr = ledgerEntryState(env, bob, gw, "USD");
|
||||
if (NumberSwitchOver)
|
||||
{
|
||||
BEAST_EXPECT(
|
||||
jrr[jss::node][sfBalance.fieldName][jss::value] ==
|
||||
"-0.9665000000333333");
|
||||
}
|
||||
else
|
||||
{
|
||||
BEAST_EXPECT(
|
||||
jrr[jss::node][sfBalance.fieldName][jss::value] ==
|
||||
"-0.966500000033334");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Reference in New Issue
Block a user