Skip to content

Commit 561e425

Browse files
committed
py: Fix bug in mpz_and function.
Addresses issue adafruit#610.
1 parent cc97446 commit 561e425

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

py/mpz.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,8 @@ STATIC uint mpn_and(mpz_dig_t *idig, const mpz_dig_t *jdig, uint jlen, const mpz
213213
*idig = *jdig & *kdig;
214214
}
215215

216-
for (; jlen > 0; --jlen, ++idig) {
217-
*idig = 0;
216+
// remove trailing zeros
217+
for (; idig > oidig && *idig == 0; --idig) {
218218
}
219219

220220
return idig - oidig;

tests/basics/int-big-and.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
print(0 & (1 << 80))
2+
print(0 & (1 << 80) == 0)
3+
print(bool(0 & (1 << 80)))
4+
5+
#a = 0xfffffffffffffffffffffffffffff
6+
#print(a & (1 << 80))
7+
#print((a & (1 << 80)) >> 80)
8+
#print((a & (1 << 80)) >> 80 == 1)

0 commit comments

Comments
 (0)