about summary refs log tree commit diff
path: root/stdlib
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/longlong.h30
-rw-r--r--stdlib/strtod.c71
2 files changed, 49 insertions, 52 deletions
diff --git a/stdlib/longlong.h b/stdlib/longlong.h
index 6d4f237405..8bb6995cd0 100644
--- a/stdlib/longlong.h
+++ b/stdlib/longlong.h
@@ -1,21 +1,21 @@
 /* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
+   Copyright (C) 1991, 92, 93, 94, 96, 97 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
 
-Copyright (C) 1991, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
 
-This file is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
 
-This file is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with this file; see the file COPYING.LIB.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /* You have to define the following before including this file:
 
@@ -585,7 +585,7 @@ extern USItype __udiv_qrnnd ();
 	addx%.l	%2,%0
 	| End inlined umul_ppmm"					\
 	      : "=&d" ((USItype)(xh)), "=&d" ((USItype)(xl)),		\
-	        "=d" (__umul_tmp1), "=&d" (__umul_tmp2)			\
+		"=d" (__umul_tmp1), "=&d" (__umul_tmp2)			\
 	      : "%2" ((USItype)(a)), "d" ((USItype)(b)));		\
   } while (0)
 #define UMUL_TIME 100
diff --git a/stdlib/strtod.c b/stdlib/strtod.c
index 5ddb956081..1c13af721a 100644
--- a/stdlib/strtod.c
+++ b/stdlib/strtod.c
@@ -46,6 +46,7 @@
 	 mant = 0x8000000000000ULL;					      \
        u.ieee.mantissa0 = ((mant) >> 32) & 0xfffff;			      \
        u.ieee.mantissa1 = (mant) & 0xffffffff;				      \
+       (flt) = u.d;							      \
   } while (0)
 #endif
 /* End of configuration part.  */
@@ -504,11 +505,9 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
     {
       int matched = 0;
       /* Check for `INF' or `INFINITY'.  */
-      if (TOLOWER (c) == L_('i') && ((STRNCASECMP (cp, L_("nf"), 2) == 0
-				      && (matched = 2))
-				     || (STRNCASECMP (cp, L_("nfinity"), 7)
-					 == 0
-					 && (matched = 7))))
+      if (TOLOWER (c) == L_('i')
+	  && ((STRNCASECMP (cp, L_("inf"), 3) == 0 && (matched = 3))
+	      || (STRNCASECMP (cp, L_("infinity"), 8) == 0 && (matched = 8))))
 	{
 	  /* Return +/- inifity.  */
 	  if (endptr != NULL)
@@ -517,47 +516,45 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM)
 	  return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
 	}
 
-      if (TOLOWER (c) == L_('n') && STRNCASECMP (cp, L_("an"), 2) == 0)
+      if (TOLOWER (c) == L_('n') && STRNCASECMP (cp, L_("nan"), 3) == 0)
 	{
+	  /* Return NaN.  */
 	  FLOAT retval = NAN;
 
-	  /* Return NaN.  */
-	  if (endptr != NULL)
-	    {
-	      cp += 2;
+	  cp += 3;
 
-	      /* Match `(n-char-sequence-digit)'.  */
-	      if (*cp == L_('('))
-		{
-		  const STRING_TYPE *startp = cp;
-		  do
-		    ++cp;
-		  while ((*cp >= '0' && *cp <= '9')
-			 || (TOLOWER (*cp) >= 'a' && TOLOWER (*cp) <= 'z')
+	  /* Match `(n-char-sequence-digit)'.  */
+	  if (*cp == L_('('))
+	    {
+	      const STRING_TYPE *startp = cp;
+	      do
+		++cp;
+	      while ((*cp >= L_('0') && *cp <= L_('9'))
+		     || (TOLOWER (*cp) >= L_('a') && TOLOWER (*cp) <= L_('z'))
 		     || *cp == L_('_'));
 
-		  if (*cp != L_(')'))
-		    /* The closing brace is missing.  Only match the NAN
-		       part.  */
-		    cp = startp;
-		  else
-		    {
-		      /* This is a system-dependent way to specify the
-			 bitmask used for the NaN.  We expect it to be
-			 a number which is put in the mantissa of the
-			 number.  */
-		      STRING_TYPE *endp;
-		      unsigned long long int mant;
-
-		      mant = STRTOULL (startp, &endp, 0);
-		      if (endp == cp)
-			SET_MANTISSA (retval, mant);
-		    }
+	      if (*cp != L_(')'))
+		/* The closing brace is missing.  Only match the NAN
+		   part.  */
+		cp = startp;
+	      else
+		{
+		  /* This is a system-dependent way to specify the
+		     bitmask used for the NaN.  We expect it to be
+		     a number which is put in the mantissa of the
+		     number.  */
+		  STRING_TYPE *endp;
+		  unsigned long long int mant;
+
+		  mant = STRTOULL (startp + 1, &endp, 0);
+		  if (endp == cp)
+		    SET_MANTISSA (retval, mant);
 		}
-
-	      *endptr = (STRING_TYPE *) cp;
 	    }
 
+	  if (endptr != NULL)
+	    *endptr = (STRING_TYPE *) cp;
+
 	  return retval;
 	}