From e34d56327a34479c6ab5f55d6ba48d533e59c7bb Mon Sep 17 00:00:00 2001 From: Jonas Quinten Date: Fri, 21 Feb 2025 18:00:06 +0100 Subject: [PATCH] std::math::bigint: Fixed init_with_u128 and init_with_array --- lib/std/math/bigint.c3 | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/std/math/bigint.c3 b/lib/std/math/bigint.c3 index 79462a27d..8c6fb83e5 100644 --- a/lib/std/math/bigint.c3 +++ b/lib/std/math/bigint.c3 @@ -44,17 +44,16 @@ fn BigInt* BigInt.init(&self, int128 value) fn BigInt* BigInt.init_with_u128(&self, uint128 value) { self.data[..] = 0; - int128 tmp = value; + uint128 tmp = value; uint len = 0; - while (tmp != 0 && len < MAX_LEN) + while (tmp != 0) { self.data[len] = (uint)(tmp & 0xFFFFFFFF); tmp >>= 32; len++; } - self.len = len; - assert(value == 0 || tmp == 0 || !self.is_negative()); - self.len = max(len, 1); + assert(!self.is_negative()); + self.len = max(len ?: 1); return self; } @@ -68,7 +67,7 @@ fn BigInt* BigInt.init_with_array(&self, uint[] values) foreach_r(i, val : values) { - values[values.len - 1 - i] = val; + self.data[values.len - 1 - i] = val; } while (self.len > 1 && self.data[self.len - 1] == 0) {