summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--py/mpz.c8
-rw-r--r--tests/basics/int_big_and.py2
2 files changed, 4 insertions, 6 deletions
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)