gdtoa-strtof.c.patch   [plain text]


--- gdtoa-strtof.c.orig	2005-01-20 20:12:37.000000000 -0800
+++ gdtoa-strtof.c	2005-02-17 12:49:28.000000000 -0800
@@ -29,13 +29,15 @@
 /* Please send bug reports to David M. Gay (dmg at acm dot org,
  * with " at " changed at "@" and " dot " changed to ".").	*/
 
+#include "xlocale_private.h"
+
 #include "gdtoaimp.h"
 
  float
 #ifdef KR_headers
-strtof(s, sp) CONST char *s; char **sp;
+strtof_l(s, sp, loc) CONST char *s; char **sp; locale_t loc;
 #else
-strtof(CONST char *s, char **sp)
+strtof_l(CONST char *s, char **sp, locale_t loc)
 #endif
 {
 	static FPI fpi = { 24, 1-127-24+1,  254-127-24+1, 1, SI };
@@ -44,7 +46,8 @@
 	int k;
 	union { ULong L[1]; float f; } u;
 
-	k = strtodg(s, sp, &fpi, &exp, bits);
+	NORMALIZE_LOCALE(loc);
+	k = strtodg(s, sp, &fpi, &exp, bits, loc);
 	switch(k & STRTOG_Retmask) {
 	  case STRTOG_NoNumber:
 	  case STRTOG_Zero:
@@ -71,3 +74,13 @@
 		u.L[0] |= 0x80000000L;
 	return u.f;
 	}
+
+ float
+#ifdef KR_headers
+strtof(s, sp) CONST char *s; char **sp;
+#else
+strtof(CONST char *s, char **sp)
+#endif
+{
+	return strtof_l(s, sp, __current_locale());
+}