aboutsummaryrefslogtreecommitdiff
path: root/extmod/modurandom.c
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2021-05-30 16:52:08 +1000
committerDamien George <damien@micropython.org>2021-05-30 17:05:56 +1000
commitc3199f56494429ba44f7e722597945dc91f3589c (patch)
tree0c63951475cd94dc1eabb02e37e13a9859a47c17 /extmod/modurandom.c
parent34d4dab683c69578b0ddd1725290529dd812b291 (diff)
extmod/modurandom: Support an argument of bits=0 to getrandbits.
This was changed in CPython 3.9; see https://bugs.python.org/issue40282. Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'extmod/modurandom.c')
-rw-r--r--extmod/modurandom.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/extmod/modurandom.c b/extmod/modurandom.c
index f44510be9..21fbac694 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);