summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-05-24 12:54:07 +0200
committerFlorian Dold <florian@dold.me>2023-05-24 12:54:07 +0200
commitea953f2b772b07780b94daecdefde6cd253a7e90 (patch)
tree7d2e5b36d224a3d2b07ece0a4b39d2e7607e3df9 /packages/taler-wallet-core/src
parentda87ce41a6b6a6b66af7b99098e015e74ae27b67 (diff)
downloadwallet-core-ea953f2b772b07780b94daecdefde6cd253a7e90.tar.gz
wallet-core-ea953f2b772b07780b94daecdefde6cd253a7e90.tar.bz2
wallet-core-ea953f2b772b07780b94daecdefde6cd253a7e90.zip
wallet-core: use division for withdrawal coin selection
Diffstat (limited to 'packages/taler-wallet-core/src')
-rw-r--r--packages/taler-wallet-core/src/util/coinSelection.ts11
1 files changed, 3 insertions, 8 deletions
diff --git a/packages/taler-wallet-core/src/util/coinSelection.ts b/packages/taler-wallet-core/src/util/coinSelection.ts
index 3b986d72b..af6dab2bb 100644
--- a/packages/taler-wallet-core/src/util/coinSelection.ts
+++ b/packages/taler-wallet-core/src/util/coinSelection.ts
@@ -689,18 +689,13 @@ export function selectWithdrawalDenominations(
);
for (const d of denoms) {
- let count = 0;
const cost = Amounts.add(
DenominationRecord.getValue(d),
d.fees.feeWithdraw,
).amount;
- for (;;) {
- if (Amounts.cmp(remaining, cost) < 0) {
- break;
- }
- remaining = Amounts.sub(remaining, cost).amount;
- count++;
- }
+ const res = Amounts.divmod(remaining, cost);
+ const count = res.quotient;
+ remaining = Amounts.sub(remaining, Amounts.mult(cost, count).amount).amount;
if (count > 0) {
totalCoinValue = Amounts.add(
totalCoinValue,