From 4bbf8999f4d93c5da77737ccf06a1aa67225d3f4 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 25 Apr 2009 17:56:10 +0000 Subject: * 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. --- stdlib/strtod_l.c | 3 ++- stdlib/tst-strtod.c | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) (limited to 'stdlib') diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c index 09a8f9bb3b..9ddfa3fa66 100644 --- a/stdlib/strtod_l.c +++ b/stdlib/strtod_l.c @@ -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 , 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 diff --git a/stdlib/tst-strtod.c b/stdlib/tst-strtod.c index 628e40ca39..c30eb1ee12 100644 --- a/stdlib/tst-strtod.c +++ b/stdlib/tst-strtod.c @@ -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 }, -- cgit v1.2.3