* stdlib/strtod_l.c (round_and_return): We have to set errno to

ERANGE for underflows.
	* stdlib/tst-strtod.c (tests): Two tests should set errno to ERANGE.
This commit is contained in:
Ulrich Drepper 2009-04-25 17:56:10 +00:00
parent af9f1c486e
commit 4bbf8999f4
3 changed files with 9 additions and 4 deletions

View File

@ -1,5 +1,9 @@
2009-04-25 Ulrich Drepper <drepper@redhat.com>
* stdlib/strtod_l.c (round_and_return): We have to set errno to
ERANGE for underflows.
* stdlib/tst-strtod.c (tests): Two tests should set errno to ERANGE.
* stdio-common/stdio_lim.h.in (L_cuserid): Not part of POSIX since
the 2001 revision.

View File

@ -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
Copyright (C) 1997,1998,2002,2004,2005,2006,2007,2008,2009
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -232,6 +232,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
# define DENORM_EXP (MIN_EXP - 2)
#endif
exponent = DENORM_EXP;
__set_errno (ERANGE);
}
if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991,96,97,98,99,2000,2001,2003 Free Software Foundation, Inc.
/* Copyright (C) 1991,1996-2001,2003,2009 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -61,10 +61,10 @@ static const struct ltest tests[] =
{ "0x00.0014p19", 160.0, '\0', 0 },
{ "0x1p-1023",
1.11253692925360069154511635866620203210960799023116591527666e-308,
'\0', 0 },
'\0', ERANGE },
{ "0x0.8p-1022",
1.11253692925360069154511635866620203210960799023116591527666e-308,
'\0', 0 },
'\0', ERANGE },
#if __GNUC_PREREQ(2,96)
/* For older GCC release HUGE_VAL is not a constant. */
{ "Inf", HUGE_VAL, '\0', 0 },