--- mpmod.c.orig 2005-11-29 13:36:42.985141525 +0100 +++ mpmod.c 2005-11-29 13:37:47.025412609 +0100 @@ -78,7 +78,11 @@ mpz_mod (w, u, n); /* 2^(2lo) mod n = -/+2^(2lo-l) if m*n = 2^l+/-1 */ if (mpz_cmp_ui (w, 1) == 0) /* if 2^(2lo) mod n = 1, then n divides 2^lo+1, since n has lo+1 bits. */ - return lo; + { + mpz_clear (u); + mpz_clear (w); + return lo; + } k = mpz_sizeinbase (w, 2) - 1; /* if w = 2^k then n divides 2^(2*lo-k)-1 */ mpz_set_ui (u, 1);