From ae393329f7adf1c3009219ba703fc7fa2ca98fcd Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sun, 25 Mar 2012 00:28:11 +0900 Subject: [PATCH] Fixed segmentation fault in open solaris in unit test. This is due to the fact that the maximum value of random() in open solaris is not RAND_MAX, but (2**31)-1. --- src/SimpleRandomizer.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/SimpleRandomizer.cc b/src/SimpleRandomizer.cc index 48a46b96..cdeedde7 100644 --- a/src/SimpleRandomizer.cc +++ b/src/SimpleRandomizer.cc @@ -98,14 +98,15 @@ long int SimpleRandomizer::getMaxRandomNumber() #ifdef __MINGW32__ return INT32_MAX; #else // !__MINGW32__ + // TODO Warning: The maximum value of random() in some sytems (e.g., + // Solaris and openbsd) is (2**31)-1. return RAND_MAX; #endif // !__MINGW32__ } long int SimpleRandomizer::getRandomNumber(long int to) { - - return(long int)(((double)to)*getRandomNumber()/(getMaxRandomNumber()+1.0)); + return getRandomNumber() % to; } long int SimpleRandomizer::operator()(long int to)