From: Eric Blake Date: Tue, 24 Feb 2009 13:15:59 +0000 (-0700) Subject: strtod: detect HP-UX 11.31 bug X-Git-Tag: v0.1~6276 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=61c74776c4a0dc5faa23dbc1ad0f9dd23bf14521;p=gnulib.git strtod: detect HP-UX 11.31 bug * m4/strtod.m4 (gl_FUNC_STRTOD): Detect errno handling bug. Reported by Gary V. Vaughan. Signed-off-by: Eric Blake --- diff --git a/ChangeLog b/ChangeLog index ec08cde60..23382729f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-02-24 Eric Blake + + strtod: detect HP-UX 11.31 bug + * m4/strtod.m4 (gl_FUNC_STRTOD): Detect errno handling bug. + Reported by Gary V. Vaughan. + 2009-02-23 Bruno Haible Fix invalid read past end of memory block. diff --git a/m4/strtod.m4 b/m4/strtod.m4 index caaaa4b45..1f301c2ee 100644 --- a/m4/strtod.m4 +++ b/m4/strtod.m4 @@ -1,4 +1,4 @@ -# strtod.m4 serial 10 +# strtod.m4 serial 11 dnl Copyright (C) 2002-2003, 2006-2009 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -18,6 +18,7 @@ AC_DEFUN([gl_FUNC_STRTOD], [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include +#include /* Compare two numbers with ==. This is a separate function because IRIX 6.5 "cc -O" miscompiles an 'x == x' test. */ @@ -45,11 +46,13 @@ numeric_equal (double x, double y) return 1; } { - /* Many platforms do not parse infinities. */ + /* Many platforms do not parse infinities. HP-UX 11.31 parses inf, + but mistakenly sets errno. */ const char *string = "inf"; char *term; + errno = 0; double value = strtod (string, &term); - if (value != HUGE_VAL || term != (string + 3)) + if (value != HUGE_VAL || term != (string + 3) || errno) return 1; } {