X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fc-strtod.c;h=5b39b9b14438e11e397b5c267c369c4e0bdaf945;hb=f9e83fd48cb5c5a0b5a65751710138d42c814402;hp=9723e0b78879dc4bb4b376a6f82ef697cfddd3d1;hpb=5965a9b1d0011a0340b57e1faa0b8a3f7997c519;p=gnulib.git diff --git a/lib/c-strtod.c b/lib/c-strtod.c index 9723e0b78..5b39b9b14 100644 --- a/lib/c-strtod.c +++ b/lib/c-strtod.c @@ -1,6 +1,6 @@ /* Convert string to double, using the C locale. - Copyright (C) 2003, 2004, 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 2003-2004, 2006, 2009-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,7 +43,7 @@ # define STRTOD strtod #endif -#ifdef LC_ALL_MASK +#if defined LC_ALL_MASK && (LONG ? HAVE_STRTOLD_L : HAVE_STRTOD_L) /* Cache for the C locale object. Marked volatile so that different threads see the same value @@ -67,13 +67,13 @@ C_STRTOD (char const *nptr, char **endptr) { DOUBLE r; -#ifdef LC_ALL_MASK +#if defined LC_ALL_MASK && (LONG ? HAVE_STRTOLD_L : HAVE_STRTOD_L) locale_t locale = c_locale (); if (!locale) { if (endptr) - *endptr = nptr; + *endptr = (char *) nptr; return 0; /* errno is set here */ } @@ -87,11 +87,11 @@ C_STRTOD (char const *nptr, char **endptr) { saved_locale = strdup (saved_locale); if (saved_locale == NULL) - { - if (endptr) - *endptr = nptr; - return 0; /* errno is set here */ - } + { + if (endptr) + *endptr = (char *) nptr; + return 0; /* errno is set here */ + } setlocale (LC_NUMERIC, "C"); }