mirror of
https://github.com/odin-lang/Odin.git
synced 2026-05-26 13:48:23 +00:00
Fix big int shifts of 0
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user