From 8ba4fba58a6ffbc3b83fa97b8aacafc1da43fd7b Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Tue, 1 Dec 2009 22:49:48 +0100 Subject: [PATCH] We used the wrong data for the random state when dealing with bignums (src/c/num_rand.d) --- src/c/num_rand.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/c/num_rand.d b/src/c/num_rand.d index 9fc06c297..4ef42064d 100644 --- a/src/c/num_rand.d +++ b/src/c/num_rand.d @@ -159,8 +159,8 @@ random_integer(cl_object limit, cl_object state) if (bit_length <= FIXNUM_BITS) bit_length = FIXNUM_BITS; buffer = ecl_ash(MAKE_FIXNUM(1), bit_length); - for (bit_length = buffer->big.big_size; bit_length--; ) { - buffer->big.big_limbs[bit_length] = + for (bit_length = mpz_size(buffer->big.big_num); bit_length; ) { + buffer->big.big_limbs[--bit_length] = generate_limb(state); } return cl_mod(buffer, limit); @@ -184,7 +184,7 @@ rando(cl_object x, cl_object rs) break; #endif case t_bignum: - z = random_integer(x, rs); + z = random_integer(x, rs->random.value); break; #ifdef ECL_SHORT_FLOAT case t_shortfloat: