commit 18f7406d46878e746f41595520426e7b885498f1
parent bcd9e2e5ff7f14308c5298a257388afc398dc674
Author: Florian Dold <florian.dold@gmail.com>
Date: Thu, 16 Jul 2020 17:21:12 +0530
fix broken amount multiplication
Diffstat:
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/src/util/amounts.ts b/src/util/amounts.ts
@@ -342,22 +342,26 @@ function mult(a: AmountJson, n: number): Result {
if (n == 0) {
return { amount: getZero(a.currency), saturated: false };
}
- let acc = { ...a };
+ let x = a;
+ let acc = getZero(a.currency);
while (n > 1) {
- let r: Result;
if (n % 2 == 0) {
n = n / 2;
- r = add(acc, acc);
} else {
- n = n - 1;
- r = add(acc, a);
+ n = (n - 1) / 2;
+ const r2 = add(acc, x)
+ if (r2.saturated) {
+ return r2;
+ }
+ acc = r2.amount;
}
- if (r.saturated) {
- return r;
+ const r2 = add(x, x);
+ if (r2.saturated) {
+ return r2;
}
- acc = r.amount;
+ x = r2.amount;
}
- return { amount: acc, saturated: false };
+ return add(acc, x);
}
// Export all amount-related functions here for better IDE experience.