diff options
author | Max Nikulin <manikulin@gmail.com> | 2024-08-06 16:10:12 +0700 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2024-08-06 10:40:04 -1000 |
commit | b7be0a1fedfeec26e4b7d35357157d5a9209f3ee (patch) | |
tree | fb1584ca7ce34cbb38d34e9ecd4ad84659dfb538 /src/amount.cc | |
parent | 28ae2eaccb58e539dfd8f8533508a8edfe8bb027 (diff) | |
download | fork-ledger-b7be0a1fedfeec26e4b7d35357157d5a9209f3ee.tar.gz fork-ledger-b7be0a1fedfeec26e4b7d35357157d5a9209f3ee.tar.bz2 fork-ledger-b7be0a1fedfeec26e4b7d35357157d5a9209f3ee.zip |
Fix copy on write for amount_t::in_place_roundto
- Copy amount quantity before rounding.
- Fix `amount_t::roundto(int)`.
- Transform `balance/testRound` into `balance/testRoundto`.
It was a mix of `round` and `roundto` operation with unclear purpose
and was relying on `in_place_roundto` behavior modifying all copies.
There is no unit tests for balance `round` and `unround` any more.
Closes #2362
Diffstat (limited to 'src/amount.cc')
-rw-r--r-- | src/amount.cc | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/src/amount.cc b/src/amount.cc index 604519df..da8cd6fc 100644 --- a/src/amount.cc +++ b/src/amount.cc @@ -685,14 +685,7 @@ void amount_t::in_place_roundto(int places) if (! quantity) throw_(amount_error, _("Cannot round an uninitialized amount")); - // <https://github.com/ledger/ledger/issues/2362> - // _dup() call (see in_place_ceiling and in_place_floor) - // leads to 2 failures in the balance/testRound test, - // however in its absence this method affects copies of amount_t instances. - // Remove expected_failures from amount/testRound - // and update balance/testRound - // when uncommenting the following line. - // _dup(); + _dup(); mpz_t& scale(temp); if (places) |