diff --git a/gl/getloadavg.c b/gl/getloadavg.c
index 5faa8faa322c0c4b01a1862d1870badcc824dbe5..5a4005cee0b9e5d6af9ef8165582a1f440598956 100644 (file)
--- a/gl/getloadavg.c
+++ b/gl/getloadavg.c
/* 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 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.
# include <stdbool.h>
#endif
+/* Specification. */
+#include <stdlib.h>
+
#include <errno.h>
#include <stdio.h>
-#include <stdlib.h>
/* Exclude all the code except the test program at the end
if the system has its own `getloadavg' function. */
# endif /* LOAD_AVE_TYPE */
# if defined HAVE_LIBPERFSTAT
+# include <sys/protosw.h>
# include <libperfstat.h>
# include <sys/proc.h>
# ifndef SBITS
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;