Fix big int shifts of 0

This commit is contained in:
gingerBill
2018-10-28 09:32:59 +00:00
parent 2ddb27869b
commit dfd7a194ed
2 changed files with 16 additions and 0 deletions

View File

@@ -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);