diff --git a/py/mpz.c b/py/mpz.c index 166fa7adbe..e0475d60a1 100644 --- a/py/mpz.c +++ b/py/mpz.c @@ -239,12 +239,8 @@ STATIC mp_uint_t mpn_and_neg(mpz_dig_t *idig, const mpz_dig_t *jdig, mp_uint_t j carry >>= DIG_SIZE; } - if (carry != 0) { - *idig = carry; - } else { - // remove trailing zeros - for (--idig; idig >= oidig && *idig == 0; --idig) { - } + // remove trailing zeros + for (--idig; idig >= oidig && *idig == 0; --idig) { } return idig + 1 - oidig; diff --git a/tests/basics/int_big_and.py b/tests/basics/int_big_and.py index e0d0935a48..2dabe80ecf 100644 --- a/tests/basics/int_big_and.py +++ b/tests/basics/int_big_and.py @@ -24,3 +24,5 @@ print(-2345678901234567890123456789 & a) print((-a) & a) print((-a) & 0xffffffff) print((-a) & 0xffffffffffffffffffffffffffffffff) +print((-a) & 2) +print((-(1 << 70)) & 2)