summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--stdlib/rand_r.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 44f685b971..5baadb5f83 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1999-10-27  Andreas Jaeger  <aj@suse.de>
+
+	* stdlib/rand_r.c (rand_r): Really use 31 bits, the result was
+	shifted a bit too much.
+	Reported by Eugen Dedu <dedu@ese-metz.fr>.
+
 1999-10-25  Ulrich Drepper  <drepper@cygnus.com>
 
 	* resolv/gethnamaddr.c: Account bytes needed for alignment in
diff --git a/stdlib/rand_r.c b/stdlib/rand_r.c
index 3e0b8b2bc0..00c619a830 100644
--- a/stdlib/rand_r.c
+++ b/stdlib/rand_r.c
@@ -1,5 +1,5 @@
 /* Reentrant random function frm POSIX.1c.
-   Copyright (C) 1996 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -35,7 +35,7 @@ rand_r (unsigned int *seed)
 
   next *= 1103515245;
   next += 12345;
-  result <<= 11;
+  result <<= 10;
   result ^= (unsigned int) (next / 65536) % 1024;
 
   next *= 1103515245;