From 3cd19ed494c69b51f932be9c10b38a99555e261e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simen=20Kj=C3=A6r=C3=A5s?= Date: Sat, 2 Nov 2013 16:08:07 +0100 Subject: [PATCH] More fixes for pull 1679 --- std/internal/math/biguintcore.d | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/std/internal/math/biguintcore.d b/std/internal/math/biguintcore.d index 49d52dd3a..27414e44b 100644 --- a/std/internal/math/biguintcore.d +++ b/std/internal/math/biguintcore.d @@ -483,9 +483,12 @@ public: sign = false; return r; } - if (d > uint.max) { + if (d > uint.max) + { r.data = [cast(uint)(d & 0xFFFF_FFFF), cast(uint)(d>>32)]; - } else { + } + else + { r.data = [cast(uint)(d & 0xFFFF_FFFF)]; } } @@ -535,7 +538,7 @@ public: result[x.data.length+1] = multibyteMulAdd!('+')(result[1..x.data.length+1], x.data, hi, 0); } - return BigUint(removeLeadingZeros(result)); + return BigUint(removeLeadingZeros(assumeUnique(result))); } /* return x * y. @@ -2262,4 +2265,7 @@ unittest r = b[0..a.length]; assert(r[] == r1[]); assert(q[] == q1[]); + + BigInt n = 2; + n *= 2; }