about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--include/sys/msg.h4
-rw-r--r--math/s_cacosh.c4
-rw-r--r--math/s_cacoshf.c4
-rw-r--r--math/s_cacoshl.c4
-rw-r--r--sysvipc/msgrcv.c4
6 files changed, 23 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 2f222e8125..34428caa54 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,15 @@
 2006-08-03  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #2182]
+	* math/s_cacosh.c: Return values from positive branch.
+	* math/s_cacoshf.c: Likewise.
+	* math/s_cacoshl.c: Likewise.
+
 	[BZ #2883]
 	* sysvipc/sys/msg.h: Change return value to ssize_t.
 	* sysdeps/unix/sysv/linux/msgrcv.c: Likewise.
+	* sysvipc/msgrcv.c: Likewise.
+	* include/sys/msg.h: Likewise.
 
 	* grp/initgroups.c (internal_getgrouplist): Remove unnecessary
 	test introduced in patch for bz #661.
diff --git a/include/sys/msg.h b/include/sys/msg.h
index 02bb9aefd0..03e17f915e 100644
--- a/include/sys/msg.h
+++ b/include/sys/msg.h
@@ -1,8 +1,8 @@
 #ifndef _SYS_MSG_H
 #include <sysvipc/sys/msg.h>
 
-extern int __libc_msgrcv (int msqid, void *msgp, size_t msgsz, long int msgtyp,
-			  int msgflg);
+extern ssize_t __libc_msgrcv (int msqid, void *msgp, size_t msgsz,
+			      long int msgtyp, int msgflg);
 extern int __libc_msgsnd (int msqid, const void *msgp, size_t msgsz,
 			  int msgflg);
 
diff --git a/math/s_cacosh.c b/math/s_cacosh.c
index e921f0763e..ada7ca5af6 100644
--- a/math/s_cacosh.c
+++ b/math/s_cacosh.c
@@ -80,6 +80,10 @@ __cacosh (__complex__ double x)
       __imag__ y += __imag__ x;
 
       res = __clog (y);
+
+      /* We have to use the positive branch.  */
+      if (__real__ res < 0.0)
+	res = -res;
     }
 
   return res;
diff --git a/math/s_cacoshf.c b/math/s_cacoshf.c
index 3fc48bb617..a062ffc6f6 100644
--- a/math/s_cacoshf.c
+++ b/math/s_cacoshf.c
@@ -95,6 +95,10 @@ __cacoshf (__complex__ float x)
 					   + ro);
       __imag__ res = __ieee754_atan2f (__imag__ x + b, __real__ x + a);
 #endif
+
+      /* We have to use the positive branch.  */
+      if (__real__ res < 0.0)
+	res = -res;
     }
 
   return res;
diff --git a/math/s_cacoshl.c b/math/s_cacoshl.c
index 643858920e..da23c8d8aa 100644
--- a/math/s_cacoshl.c
+++ b/math/s_cacoshl.c
@@ -80,6 +80,10 @@ __cacoshl (__complex__ long double x)
       __imag__ y += __imag__ x;
 
       res = __clogl (y);
+
+      /* We have to use the positive branch.  */
+      if (__real__ res < 0.0)
+	res = -res;
     }
 
   return res;
diff --git a/sysvipc/msgrcv.c b/sysvipc/msgrcv.c
index f366fa8170..83732b3113 100644
--- a/sysvipc/msgrcv.c
+++ b/sysvipc/msgrcv.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
 
@@ -26,7 +26,7 @@
    describes which message is returned in MSGFLG describes the behaviour
    in buffer overflow or queue underflow.  */
 
-int
+ssize_t
 msgrcv (msqid, msgp, msgsz, msgtyp, msgflg)
      int msqid;
      void *msgp;