Mercurial > hg > octave-lyh > gnulib-hg
changeset 11071:784aa6a7ca43
Improve error checking of c_strtod call.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Wed, 21 Jan 2009 23:55:58 +0100 |
parents | 42d47e0b9b24 |
children | 2017a2abcff4 |
files | ChangeLog lib/getloadavg.c |
diffstat | 2 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-01-21 Bruno Haible <bruno@clisp.org> + + * lib/getloadavg.c (getloadavg): Check c_strtod result against error + conditions other than overflow. + 2009-01-21 Bruno Haible <bruno@clisp.org> * lib/c-strtod.c: Include errno.h.
--- a/lib/getloadavg.c +++ b/lib/getloadavg.c @@ -1,8 +1,8 @@ /* Get the system load averages. Copyright (C) 1985, 1986, 1987, 1988, 1989, 1991, 1992, 1993, 1994, - 1995, 1997, 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2008 Free Software - Foundation, Inc. + 1995, 1997, 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free + Software Foundation, Inc. NOTE: The canonical source of this file is maintained with gnulib. Bugs can be reported to bug-gnulib@gnu.org. @@ -621,8 +621,11 @@ for (elem = 0; elem < nelem; elem++) { char *endptr; - double d = c_strtod (ptr, &endptr); - if (ptr == endptr) + double d; + + errno = 0; + d = c_strtod (ptr, &endptr); + if (ptr == endptr || (d == 0 && errno != 0)) { if (elem == 0) return -1;