Make g_ascii_strtod behave as documented

The docs explicitly state that we reset errno, so lets do that,
even if we just wrap strtod_l. Also move the argument check
out of the ifdef.

https://bugzilla.gnome.org/show_bug.cgi?id=662398
This commit is contained in:
Matthias Clasen 2011-10-21 14:57:47 -04:00
parent 848df03e16
commit e52437982c

View File

@ -673,12 +673,16 @@ g_strtod (const gchar *nptr,
* you can reliably detect overflow and underflow.
*
* Return value: the #gdouble value.
**/
*/
gdouble
g_ascii_strtod (const gchar *nptr,
gchar **endptr)
{
g_return_val_if_fail (nptr != NULL, 0);
#ifdef HAVE_STRTOD_L
errno = 0;
return strtod_l (nptr, endptr, get_C_locale ());
#else
gchar *fail_pos;
@ -690,8 +694,6 @@ g_ascii_strtod (const gchar *nptr,
const char *end = NULL; /* Silence gcc */
int strtod_errno;
g_return_val_if_fail (nptr != NULL, 0);
fail_pos = NULL;
locale_data = localeconv ();