mesa: use C locale for _mesa_strtod()

_mesa_strtod() is used for shader/program parsing where the decimal
point character is always '.'  Use strtod_l() with a "C" locale to
ensure correct string->double conversion when the actual locale uses
another character such as ',' for the decimal point.

Fixes bug 24531.
This commit is contained in:
Brian Paul
2009-10-14 14:19:03 -06:00
parent 3f30b0709b
commit 89b31c9619
+12
View File
@@ -48,6 +48,10 @@
#include "context.h"
#include "version.h"
#ifdef _GNU_SOURCE
#include <locale.h>
#endif
#define MAXSTRING 4000 /* for vsnprintf() */
@@ -908,7 +912,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 */