From 783f4730a876f100280134e5f1318e4370e0ea2f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Kochma=C5=84ski?= Date: Mon, 21 Sep 2015 10:21:44 +0200 Subject: [PATCH] init-random: move array allocation to init_genrand MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Kochmański --- src/c/num_rand.d | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/c/num_rand.d b/src/c/num_rand.d index e911beb..5d2d84c 100644 --- a/src/c/num_rand.d +++ b/src/c/num_rand.d @@ -45,24 +45,26 @@ #define ulong unsigned long -void -init_genrand(ulong seed, void *mt_ptr) +cl_object +init_genrand(ulong seed) { + cl_object array = + ecl_alloc_simple_base_string((sizeof(ulong) * (MT_N + 1))); + ulong *mt = (ulong*)(array->base_string.self); int j = 0; - ulong *mt = (ulong*)mt_ptr; mt[0] = seed & 0xffffffffUL; for (j=1; j < MT_N; j++) - mt[j] = (1812433253UL * (mt[j-1] ^ (mt[j-1] >> 30)) + j) & 0xffffffffUL; + mt[j] = (1812433253UL * (mt[j-1] ^ (mt[j-1] >> 30)) + j) + & 0xffffffffUL; mt[MT_N] = MT_N+1; + return array; } cl_object init_random_state() { - cl_object a = ecl_alloc_simple_base_string((sizeof(ulong) * (MT_N + 1))); ulong seed; - #if !defined(ECL_MS_WINDOWS_HOST) /* fopen() might read full 4kB blocks and discard * a lot of entropy, so use open() */ @@ -78,8 +80,7 @@ init_random_state() seed = (rand() + time(0)); } - init_genrand(seed, (void *)a->base_string.self); - return a; + return init_genrand(seed); } ulong -- 2.9.0