summary refs log tree commit diff
path: root/stdlib/strtod.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-08-25 04:51:08 +0000
committerUlrich Drepper <drepper@redhat.com>2002-08-25 04:51:08 +0000
commit6dd67bd565db889944d740379e6ae87bd3fd4e44 (patch)
tree57e0f1549fe4d23dc1b6b6ba939904739d2f6a29 /stdlib/strtod.c
parente2dced828ea26102bd9599acd9fc43bf944e37be (diff)
downloadglibc-6dd67bd565db889944d740379e6ae87bd3fd4e44.tar.gz
glibc-6dd67bd565db889944d740379e6ae87bd3fd4e44.tar.xz
glibc-6dd67bd565db889944d740379e6ae87bd3fd4e44.zip
Update.
2002-08-24  Ulrich Drepper  <drepper@redhat.com>

	* locale/programs/charmap.c (charmap_new_char): Don't use
	ULONG_MAX as maximum UCS4 value.

	* sysdeps/unix/sysv/linux/ia64/sys/user.h: New file.

	* sysdeps/generic/strtol.c: We don't need the isascii test in glibc.

	* malloc/hooks.c (public_sET_STATe): use size_t as type for i.
	* malloc/malloc.c (mALLINFo): Likewise.

	* libio/wstrops.c (_IO_wstr_pbackfail): Use WEOF in comparison.

	* libio/wfileops.c (_IO_wfile_overflow): Use EOF not WEOF when
	examining result of _IO_do_flush call.

	* stdio-common/vfprintf.c (vfprintf): Use correct type in va_arg.
	Use prec not spec when sizing buffers.

	* catgets/open_catalog.c (__open_catalog): Add casts to avoid warnings.
	* locale/loadarchive.c (_nl_load_locale_from_archive): Likewise.
	* locale/loadlocale.c (_nl_intern_locale_data): Likewise.
	* stdio-common/vfscanf.c (inchar): Likewise.
	* misc/efgcvt_r.c (fcvt_r): Likewise.
	* elf/dl-misc.c (_dl_debug_vdprintf): Likewise.
	* elf/readlib.c (process_file): Likewise.
	* elf/sprof.c (load_profdata): Likewise.
	* sysdeps/ia64/hp-timing.h (HP_TIMING_PRINT): Likewise.
	* locale/programs/linereader.c (get_toplvl_escape): Likewise.
	* locale/programs/charmap.c (charmap_read): Likewise.
	* libio/fileops.c: Likewise.
	* libio/fmemopen.c: Likewise.
	* stdlib/strtod.c: Likewise.
	* elf/dl-load.c: Likewise.
	* iconv/iconvconfig.c: Likewise.
	* iconv/iconv_prog.c (process_block): Likewise.

	* sysdeps/unix/sysv/linux/ia64/Makefile: Define _ASM_IA64_CURRENT_H
	macro to calm down the compiler.

	* iconv/gconv_cache.c (__gconv_load_cache): Add cast to avoid warning.

	* sysdeps/ia64/elf/initfini.c: Don't use newlines embedded in string.

	* sysdeps/unix/sysv/linux/i386/sysdep.S: Update comment regarding
	placement of errno definition.
	* sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise.
	* sysdeps/unix/sysv/linux/mips/sysdep.S: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sysdep.S: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise.

	* resolv/nss_dns/dns-host.c (MAXPACKET): Increase minimum value
	from 1024 to 65536, to avoid buffer overrun.

2002-08-16  Paul Eggert  <eggert@twinsun.com>

	* resolv/gethnamaddr.c (MAXPACKET): Increase minimum value
	from 1024 to 65536, to avoid buffer overrun.
	* resolv/res_query.c (MAXPACKET): Likewise.

	architectures.
Diffstat (limited to 'stdlib/strtod.c')
-rw-r--r--stdlib/strtod.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/stdlib/strtod.c b/stdlib/strtod.c
index 7509a9d3f3..518b171f09 100644
--- a/stdlib/strtod.c
+++ b/stdlib/strtod.c
@@ -556,7 +556,8 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
   /* Return 0.0 if no legal string is found.
      No character is used even if a sign was found.  */
 #ifdef USE_WIDE_CHAR
-  if (c == decimal && cp[1] >= L'0' && cp[1] <= L'9')
+  if (c == (wint_t) decimal
+      && (wint_t) cp[1] >= L'0' && (wint_t) cp[1] <= L'9')
     {
       /* We accept it.  This funny construct is here only to indent
 	 the code directly.  */
@@ -648,7 +649,7 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
 
   /* Ignore leading zeroes.  This helps us to avoid useless computations.  */
 #ifdef USE_WIDE_CHAR
-  while (c == L'0' || (thousands != L'\0' && c == thousands))
+  while (c == L'0' || ((wint_t) thousands != L'\0' && c == (wint_t) thousands))
     c = *++cp;
 #else
   if (thousands == NULL)
@@ -675,17 +676,19 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
   /* If no other digit but a '0' is found the result is 0.0.
      Return current read pointer.  */
   if ((c < L_('0') || c > L_('9'))
-      && (base == 16 && (c < TOLOWER (L_('a')) || c > TOLOWER (L_('f'))))
+      && (base == 16 && (c < (wint_t) TOLOWER (L_('a'))
+			 || c > (wint_t) TOLOWER (L_('f'))))
 #ifdef USE_WIDE_CHAR
-      && c != decimal
+      && c != (wint_t) decimal
 #else
       && ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
 	      if (decimal[cnt] != cp[cnt])
 		break;
 	    decimal[cnt] != '\0'; })
 #endif
-      && (base == 16 && (cp == start_of_digits || TOLOWER (c) != L_('p')))
-      && (base != 16 && TOLOWER (c) != L_('e')))
+      && (base == 16 && (cp == start_of_digits
+			 || (CHAR_TYPE) TOLOWER (c) != L_('p')))
+      && (base != 16 && (CHAR_TYPE) TOLOWER (c) != L_('e')))
     {
       tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping);
       /* If TP is at the start of the digits, there was no correctly
@@ -700,12 +703,13 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
   while (1)
     {
       if ((c >= L_('0') && c <= L_('9'))
-	  || (base == 16 && TOLOWER (c) >= L_('a') && TOLOWER (c) <= L_('f')))
+	  || (base == 16 && (wint_t) TOLOWER (c) >= L_('a')
+	      && (wint_t) TOLOWER (c) <= L_('f')))
 	++dig_no;
       else
 	{
 #ifdef USE_WIDE_CHAR
-	  if (thousands == L'\0' || c != thousands)
+	  if ((wint_t) thousands == L'\0' || c != (wint_t) thousands)
 	    /* Not a digit or separator: end of the integer part.  */
 	    break;
 #else
@@ -765,7 +769,7 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
      numbers like `16.' i.e. with decimal but without trailing digits.  */
   if (
 #ifdef USE_WIDE_CHAR
-      c == decimal
+      c == (wint_t) decimal
 #else
       ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt)
 	   if (decimal[cnt] != cp[cnt])