diff options
Diffstat (limited to 'extmod/modurandom.c')
-rw-r--r-- | extmod/modurandom.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/extmod/modurandom.c b/extmod/modurandom.c index f44510be9b..21fbac6942 100644 --- a/extmod/modurandom.c +++ b/extmod/modurandom.c @@ -87,9 +87,12 @@ STATIC uint32_t yasmarang_randbelow(uint32_t n) { STATIC mp_obj_t mod_urandom_getrandbits(mp_obj_t num_in) { int n = mp_obj_get_int(num_in); - if (n > 32 || n == 0) { + if (n > 32 || n < 0) { mp_raise_ValueError(MP_ERROR_TEXT("bits must be 32 or less")); } + if (n == 0) { + return MP_OBJ_NEW_SMALL_INT(0); + } uint32_t mask = ~0; // Beware of C undefined behavior when shifting by >= than bit size mask >>= (32 - n); |