diff options
author | Eric Engestrom <[email protected]> | 2017-08-31 16:55:56 +0000 |
---|---|---|
committer | Eric Engestrom <[email protected]> | 2017-09-03 09:05:23 +0100 |
commit | 49b428470e28ae6ab22083e43fa41abf622f3b0d (patch) | |
tree | 55306089b636b316b76a0b6c3d2ddc1c96f574d3 /src/util | |
parent | 8514c5d0781e4e25669a2cd3bf8a547016b299a2 (diff) |
util: improve compiler guard
Glibc 2.26 has dropped xlocale.h, but the functions needed (strtod_l()
and strdof_l()) can be found in stdlib.h.
Improve the detection method to allow newer builds to still make use of
the locale-setting.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102454
Cc: Laurent Carlier <[email protected]>
Cc: Emil Velikov <[email protected]>
Cc: Rob Herring <[email protected]>
Signed-off-by: Eric Engestrom <[email protected]>
Reviewed-by: Laurent Carlier <[email protected]>
Reviewed-by: Jose Fonseca <[email protected]>
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/strtod.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/util/strtod.c b/src/util/strtod.c index ea7d395e2da..de695d64b47 100644 --- a/src/util/strtod.c +++ b/src/util/strtod.c @@ -26,12 +26,12 @@ #include <stdlib.h> -#ifdef _GNU_SOURCE +#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) #include <locale.h> #ifdef HAVE_XLOCALE_H #include <xlocale.h> -static locale_t loc; #endif +static locale_t loc; #endif #include "strtod.h" @@ -40,7 +40,7 @@ static locale_t loc; void _mesa_locale_init(void) { -#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H) +#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) loc = newlocale(LC_CTYPE_MASK, "C", NULL); #endif } @@ -48,7 +48,7 @@ _mesa_locale_init(void) void _mesa_locale_fini(void) { -#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H) +#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) freelocale(loc); #endif } @@ -60,7 +60,7 @@ _mesa_locale_fini(void) double _mesa_strtod(const char *s, char **end) { -#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H) +#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) return strtod_l(s, end, loc); #else return strtod(s, end); @@ -75,7 +75,7 @@ _mesa_strtod(const char *s, char **end) float _mesa_strtof(const char *s, char **end) { -#if defined(_GNU_SOURCE) && defined(HAVE_XLOCALE_H) +#if defined(_GNU_SOURCE) && defined(HAVE_STRTOD_L) return strtof_l(s, end, loc); #elif defined(HAVE_STRTOF) return strtof(s, end); |