taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/util/amounts.ts | 22+++++++++++++---------
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.