about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--posix/regex.h16
-rw-r--r--stdlib/random_r.c4
3 files changed, 24 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 3d693fdf26..bcbcaa0d31 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2000-08-21  Ulrich Drepper  <drepper@redhat.com>
 
+	* stdlib/random_r.c (__setstate_r): Correct offset when computing
+	new rptr and fptr.  Reported by Michael Fischer <fischer@cs.yale.edu>.
+
+	* posix/regex.h: Add macro definitions to allow compiling outside
+	glibc.
+
 	* sysdeps/i370/Implies: Removed.
 	* sysdeps/mvs/Implies: Removed.
 
diff --git a/posix/regex.h b/posix/regex.h
index 8576fe68fa..47f4af7b55 100644
--- a/posix/regex.h
+++ b/posix/regex.h
@@ -513,6 +513,22 @@ extern int re_exec _RE_ARGS ((const char *));
 # endif
 #endif
 
+/* GCC 2.95 and later have "__restrict"; C99 compilers have
+   "restrict", and "configure" may have defined "restrict".  */
+#ifndef __restrict
+# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__))
+#  if defined restrict || 199901L <= __STDC_VERSION__
+#   define __restrict restrict
+#  else
+#   define __restrict
+#  endif
+# endif
+/* For now unconditionally define __restrict_arr to expand to nothing.
+   Ideally we would have a test for the compiler which allows defining
+   it to restrict.  */
+# define __restrict_arr
+#endif
+
 /* POSIX compatibility.  */
 extern int regcomp _RE_ARGS ((regex_t *__restrict __preg,
 			      const char *__restrict __pattern,
diff --git a/stdlib/random_r.c b/stdlib/random_r.c
index 27573b3b05..1d9e56f19b 100644
--- a/stdlib/random_r.c
+++ b/stdlib/random_r.c
@@ -295,8 +295,8 @@ __setstate_r (arg_state, buf)
   if (type != TYPE_0)
     {
       int rear = new_state[0] / MAX_TYPES;
-      buf->rptr = &new_state[rear];
-      buf->fptr = &new_state[(rear + separation) % degree];
+      buf->rptr = &new_state[1 + rear];
+      buf->fptr = &new_state[1 + (rear + separation) % degree];
     }
   buf->state = &new_state[1];
   /* Set end_ptr too.  */