taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

commit 7d1b2277ed5994f387f108bed31c900b6cdbaa4e
parent 397226517727e583bbd1ddd39845c37e65f1a99f
Author: Marc Stibane <marc@taler.net>
Date:   Fri, 14 Aug 2026 08:02:20 +0200

clamp shiftLeft

Diffstat:
Mtaler-swift/Sources/taler-swift/Amount.swift | 6++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/taler-swift/Sources/taler-swift/Amount.swift b/taler-swift/Sources/taler-swift/Amount.swift @@ -367,7 +367,8 @@ public final class Amount: Codable, Hashable, @unchecked Sendable, CustomStringC public func shiftLeft(add digit: UInt8, _ inputDigits: UInt) { if inputDigits > 0 { // how many digits to shift right (e.g. inputD=2 ==> shift:=6) - let shift = Self.fractionalBaseDigits - inputDigits + let digits = min(inputDigits, Self.fractionalBaseDigits) + let shift = Self.fractionalBaseDigits - digits // mask to zero out fractions smaller than inputDigits let shiftMask = fractionalBase(shift) @@ -406,7 +407,8 @@ public final class Amount: Codable, Hashable, @unchecked Sendable, CustomStringC /// Sets all fractional digits after inputDigits to 0 public func mask(_ inputDigits: UInt) { - let mask = fractionalBase(Self.fractionalBaseDigits - inputDigits) + let digits = min(inputDigits, Self.fractionalBaseDigits) + let mask = fractionalBase(Self.fractionalBaseDigits - digits) let remainder = fraction % mask self.fraction -= remainder }