[PATCH] stdlib/strtod_l.c: Set ERANGE instead of EDOM (BZ #9696)
Marek Polacek
mpolacek@redhat.com
Thu Jun 23 17:54:00 GMT 2011
POSIX 1003.1 says about strtod that if the correct value would cause an
underflow, errno should be set to ERANGE. The underflow can be caused
by e.g. strtod ("1E-324", NULL). EDOM is usually set only by math
functions. Is this OK?
2011-06-22 Marek Polacek <mpolacek@redhat.com>
[BZ #9696]
* stdlib/strtod_l.c (round_and_return): Set ERANGE instead of EDOM.
--- libc/stdlib/strtod_l.c.mp 2011-06-22 19:29:38.369449731 +0200
+++ libc/stdlib/strtod_l.c 2011-06-22 19:38:41.372546071 +0200
@@ -1,5 +1,5 @@
/* Convert string representing a number to float value, using given locale.
- Copyright (C) 1997,1998,2002,2004,2005,2006,2007,2008,2009,2010
+ Copyright (C) 1997,1998,2002,2004,2005,2006,2007,2008,2009,2010,2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -185,7 +185,7 @@ round_and_return (mp_limb_t *retval, int
if (shift > MANT_DIG)
{
- __set_errno (EDOM);
+ __set_errno (ERANGE);
return 0.0;
}
More information about the Libc-alpha
mailing list