diff options
| -rw-r--r-- | py/objint_mpz.c | 4 | ||||
| -rw-r--r-- | tests/basics/builtin_pow3.py | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/py/objint_mpz.c b/py/objint_mpz.c index 7b5cb0b9d..808fae6e4 100644 --- a/py/objint_mpz.c +++ b/py/objint_mpz.c @@ -343,6 +343,10 @@ mp_obj_t mp_obj_int_pow3(mp_obj_t base, mp_obj_t exponent, mp_obj_t modulus) { mpz_t *rhs = mp_mpz_for_int(exponent, &r_temp); mpz_t *mod = mp_mpz_for_int(modulus, &m_temp); + if (mpz_is_zero(mod)) { + mp_raise_msg(&mp_type_ValueError, "pow() 3rd argument cannot be 0"); + } + mpz_pow3_inpl(&(res_p->mpz), lhs, rhs, mod); if (lhs == &l_temp) { mpz_deinit(lhs); } diff --git a/tests/basics/builtin_pow3.py b/tests/basics/builtin_pow3.py index 69b57e548..293a5acc9 100644 --- a/tests/basics/builtin_pow3.py +++ b/tests/basics/builtin_pow3.py @@ -22,3 +22,8 @@ try: print(pow(4, 5, "z")) except TypeError: print("TypeError expected") + +try: + print(pow(4, 5, 0)) +except ValueError: + print("ValueError expected") |
