~ chicken-core (chicken-5) 8941128b973253f9578765bf9a566c1a34bec474
commit 8941128b973253f9578765bf9a566c1a34bec474
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Wed Nov 8 16:01:47 2017 +0100
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Wed Nov 8 16:01:47 2017 +0100
use full length for random bignum, master florz says so, but it doesn't feel right...
diff --git a/runtime.c b/runtime.c
index 053a6b5a..c05b48c6 100644
--- a/runtime.c
+++ b/runtime.c
@@ -12599,12 +12599,12 @@ C_word C_random_bytes(C_word buf, C_word size)
static func RtlGenRandom = NULL;
if(RtlGenRandom == NULL) {
- HMODULE mod = LoadLibrary("advapi32.dll");
+ HMODULE mod = LoadLibrary("advapi32.dll");
- if(mod == NULL) return C_SCHEME_FALSE;
+ if(mod == NULL) return C_SCHEME_FALSE;
- if((RtlGenRandom = (func)GetProcAddress(mod, "SystemFunction036")) == NULL)
- return C_SCHEME_FALSE;
+ if((RtlGenRandom = (func)GetProcAddress(mod, "SystemFunction036")) == NULL)
+ return C_SCHEME_FALSE;
}
if(!RtlGenRandom((PVOID)C_data_pointer(buf), (LONG)count))
@@ -12681,7 +12681,7 @@ C_s_a_u_i_random_int(C_word **ptr, C_word n, C_word rn)
if(C_bignum_negativep(rn))
barf(C_OUT_OF_RANGE_ERROR, "pseudo-random-integer", rn, C_fix(0));
- int len = random_uniform(integer_length_abs(rn));
+ int len = integer_length_abs(rn);
C_word size = C_fix(C_BIGNUM_BITS_TO_DIGITS(len));
C_word result = C_allocate_scratch_bignum(ptr, size, C_SCHEME_FALSE, C_SCHEME_FALSE);
C_uword *p;
Trap