~ chicken-core (chicken-5) cd2a1a265f6075725701cfbd4a07d8411b1aa151


commit cd2a1a265f6075725701cfbd4a07d8411b1aa151
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Sat Nov 4 13:30:23 2017 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Sat Nov 4 13:30:23 2017 +0100

    correctly set last digit of random bignum

diff --git a/runtime.c b/runtime.c
index af5d32f2..3ded7f45 100644
--- a/runtime.c
+++ b/runtime.c
@@ -12672,7 +12672,7 @@ C_s_a_u_i_random_int(C_word **ptr, C_word n, C_word rn)
     len -= sizeof(C_uword);
   }
 
-  *end = random_word() >> len;  /* XXX is this right? uniform? */
+  *p = random_word() & ((1 << (len % C_BIGNUM_DIGIT_LENGTH)) - 1);
   return C_bignum_simplify(result);
 }
 
Trap