>From 2edf7a9f6cf23c96af056029026410c2ec189ebc Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Wed, 29 Feb 2012 20:50:52 +0100 Subject: [PATCH] Fix cast in C_random_fixnum so it doesn't cause overflow and truncation on amd64 for large arguments like most-positive-fixnum (as used in hash-tables) --- chicken.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/chicken.h b/chicken.h index b304d22..ffac46c 100644 --- a/chicken.h +++ b/chicken.h @@ -1128,7 +1128,7 @@ extern double trunc(double); C_unfix(end1) - C_unfix(start1) ), C_SCHEME_UNDEFINED) #define C_words(n) C_fix(C_bytestowords(C_unfix(n))) #define C_bytes(n) C_fix(C_wordstobytes(C_unfix(n))) -#define C_random_fixnum(n) C_fix((int)(((double)rand())/(RAND_MAX + 1.0) * C_unfix(n))) +#define C_random_fixnum(n) C_fix((C_word)(((double)rand())/(RAND_MAX + 1.0) * C_unfix(n))) #define C_randomize(n) (srand(C_unfix(n)), C_SCHEME_UNDEFINED) #define C_block_size(x) C_fix(C_header_size(x)) #define C_pointer_address(x) ((C_byte *)C_block_item((x), 0)) -- 1.7.9.1