summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog24
-rw-r--r--elf/dl-minimal.c11
-rw-r--r--iconv/gconv_simple.c2
-rw-r--r--malloc/mtrace.c2
-rw-r--r--stdio-common/perror.c1
-rw-r--r--sysdeps/posix/mkstemp.c4
6 files changed, 33 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index b860a45c72..0068610dc3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+1998-04-15  Ulrich Drepper  <drepper@cygnus.com>
+
+	* iconv/gconv_simple.c (__gconv_transform_ucs4_ascii): Fix typo in
+	last change.
+
+1998-04-14  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* elf/dl-minimal.c (__strtol_internal): Correct range check.  Fix
+	return value on overflow.
+
+1998-04-14  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* sysdeps/posix/mkstemp.c (mkstemp): Change value and v to 64
+	bits.
+
+1998-04-14  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
+
+	* malloc/mtrace.c (mtrace): Use standard function setvbuf instead
+	of non-standard function setbuffer.
+
+1998-04-15  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* stdio-common/perror.c: Include <string.h> for __strerror_r.
+
 1998-04-14 23:54  Ulrich Drepper  <drepper@cygnus.com>
 
 	* iconvdata/Makefile: Add rules to run tests.
diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c
index c9a0575fd0..b0c8c465e4 100644
--- a/elf/dl-minimal.c
+++ b/elf/dl-minimal.c
@@ -247,15 +247,12 @@ __strtol_internal (const char *nptr, char **endptr, int base, int group)
     {
       unsigned long int digval = *nptr - '0';
       if (result > LONG_MAX / 10
-	  || (result == (sign
-			 ? (unsigned long int) LONG_MAX
-			 : (unsigned long int) LONG_MAX + 1) / 10
-	      && digval > (sign
-			   ? (unsigned long int) LONG_MAX
-			   : (unsigned long int) LONG_MAX + 1) % 10))
+	  || (sign > 0 ? result == LONG_MAX / 10 && digval > LONG_MAX % 10
+	      : (result == ((unsigned long int) LONG_MAX + 1) / 10
+		 && digval > ((unsigned long int) LONG_MAX + 1) % 10)))
 	{
 	  errno = ERANGE;
-	  return LONG_MAX * sign;
+	  return sign > 0 ? LONG_MAX : LONG_MIN;
 	}
       result *= 10;
       result += digval;
diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c
index 21f3caee92..38b6b56adb 100644
--- a/iconv/gconv_simple.c
+++ b/iconv/gconv_simple.c
@@ -239,7 +239,7 @@ __gconv_transform_ucs4_ascii (struct gconv_step *step,
 	  size_t cnt = 0;
 
 	  while (data->outbufavail < data->outbufsize
-		 && cnt + sizeof (wchar_t) + 3 < *inlen)
+		 && cnt + 3 < *inlen)
 	    {
 	      if (*newinbuf < L'\0' || *newinbuf > L'\x7f')
 		{
diff --git a/malloc/mtrace.c b/malloc/mtrace.c
index a7f0a90d5f..f3c1387274 100644
--- a/malloc/mtrace.c
+++ b/malloc/mtrace.c
@@ -244,7 +244,7 @@ mtrace ()
       if (mallstream != NULL)
 	{
 	  /* Be sure it doesn't malloc its buffer!  */
-	  setbuffer (mallstream, malloc_trace_buffer, TRACE_BUFFER_SIZE);
+	  setvbuf (mallstream, malloc_trace_buffer, _IOFBF, TRACE_BUFFER_SIZE);
 	  fprintf (mallstream, "= Start\n");
 	  tr_old_free_hook = __free_hook;
 	  __free_hook = tr_freehook;
diff --git a/stdio-common/perror.c b/stdio-common/perror.c
index 4b29f5286a..4c29cb09e1 100644
--- a/stdio-common/perror.c
+++ b/stdio-common/perror.c
@@ -17,6 +17,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include <stdio.h>
+#include <string.h>
 #include <errno.h>
 
 /* Print a line on stderr consisting of the text in S, a colon, a space,
diff --git a/sysdeps/posix/mkstemp.c b/sysdeps/posix/mkstemp.c
index 3d8be9cc9c..f0db5d5d53 100644
--- a/sysdeps/posix/mkstemp.c
+++ b/sysdeps/posix/mkstemp.c
@@ -35,7 +35,7 @@ mkstemp (template)
 {
   static const char letters[]
     = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
-  static uint32_t value;
+  static uint64_t value;
   struct timeval tv;
   char *XXXXXX;
   size_t len;
@@ -57,7 +57,7 @@ mkstemp (template)
 
   for (count = 0; count < TMP_MAX; ++count)
     {
-      uint32_t v = value;
+      uint64_t v = value;
       int fd;
 
       /* Fill in the random bits.  */