diff options
Diffstat (limited to 'src/mesa/main/imports.c')
-rw-r--r-- | src/mesa/main/imports.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c index 6ffaddcde9..91d8d156b8 100644 --- a/src/mesa/main/imports.c +++ b/src/mesa/main/imports.c @@ -48,6 +48,13 @@ #include "context.h" #include "version.h" +#ifdef _GNU_SOURCE +#include <locale.h> +#ifdef __APPLE__ +#include <xlocale.h> +#endif +#endif + #define MAXSTRING 4000 /* for vsnprintf() */ @@ -908,7 +915,15 @@ _mesa_atoi(const char *s) double _mesa_strtod( const char *s, char **end ) { +#ifdef _GNU_SOURCE + static locale_t loc = NULL; + if (!loc) { + loc = newlocale(LC_CTYPE_MASK, "C", NULL); + } + return strtod_l(s, end, loc); +#else return strtod(s, end); +#endif } /** Compute simple checksum/hash for a string */ @@ -919,9 +934,9 @@ _mesa_str_checksum(const char *str) unsigned int sum, i; const char *c; sum = i = 1; - for (c = str; *c; c++) + for (c = str; *c; c++, i++) sum += *c * (i % 100); - return sum; + return sum + i; } |