From 18f7406d46878e746f41595520426e7b885498f1 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 16 Jul 2020 17:21:12 +0530 Subject: fix broken amount multiplication --- src/util/amounts.ts | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/util/amounts.ts b/src/util/amounts.ts index c0bb03619..94aefb3cd 100644 --- 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. -- cgit v1.2.3