Quellcode durchsuchen

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.
Tatsuhiro Tsujikawa vor 13 Jahren
Ursprung
Commit
ae393329f7
1 geänderte Dateien mit 3 neuen und 2 gelöschten Zeilen
  1. 3 2
      src/SimpleRandomizer.cc

+ 3 - 2
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)