From dfd7a194ed042083db93826b7fbc88d43290ed05 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 28 Oct 2018 09:32:59 +0000 Subject: Fix big int shifts of 0 --- src/big_int.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/big_int.cpp') diff --git a/src/big_int.cpp b/src/big_int.cpp index be4f2cdc1..8a64fbf21 100644 --- a/src/big_int.cpp +++ b/src/big_int.cpp @@ -554,6 +554,16 @@ void big_int_sub(BigInt *dst, BigInt const *x, BigInt const *y) { void big_int_shl(BigInt *dst, BigInt const *x, BigInt const *y) { GB_ASSERT(!y->neg); + if (x->len == 0) { + big_int_from_u64(dst, 0); + return; + } + + if (x->len == 1 && x->d.word == 0) { + big_int_from_u64(dst, 0); + return; + } + if (y->len == 0) { big_int_init(dst, x); return; @@ -605,6 +615,10 @@ void big_int_shr(BigInt *dst, BigInt const *x, BigInt const *y) { big_int_from_u64(dst, 0); return; } + if (x->len == 1 && x->d.word == 0) { + big_int_from_u64(dst, 0); + return; + } if (y->len == 0) { big_int_init(dst, x); -- cgit v1.2.3