Explorar el Código

"rand()", in SunOS, may return values bigger than "RAND_MAX"...

Roberto Ierusalimschy hace 28 años
padre
commit
fada8efd01
Se han modificado 1 ficheros con 4 adiciones y 2 borrados
  1. 4 2
      lmathlib.c

+ 4 - 2
lmathlib.c

@@ -1,5 +1,5 @@
 /*
 /*
-** $Id: lmathlib.c,v 1.6 1997/11/28 12:39:22 roberto Exp roberto $
+** $Id: lmathlib.c,v 1.7 1997/12/09 13:35:19 roberto Exp roberto $
 ** Lua standard mathematical library
 ** Lua standard mathematical library
 ** See Copyright Notice in lua.h
 ** See Copyright Notice in lua.h
 */
 */
@@ -145,8 +145,10 @@ static void math_max (void)
 
 
 static void math_random (void)
 static void math_random (void)
 {
 {
+  /* the '%' is needed because on some sistems (SunOS!) "rand()" may */
+  /* return a value bigger than RAND_MAX... */
+  double r = (double)(rand()%RAND_MAX) / (double)RAND_MAX;
   double l = luaL_opt_number(1, 0);
   double l = luaL_opt_number(1, 0);
-  double r = (double)rand() / (double)RAND_MAX;
   if (l == 0)
   if (l == 0)
     lua_pushnumber(r);
     lua_pushnumber(r);
   else
   else