SF#1391872

Floating point literals don't work in non-US locale in 2.5.  Patch and
new locale tests by Hye-Shik Chang.
diff --git a/Lib/test/test__locale.py b/Lib/test/test__locale.py
index ef4fe8d..abdb87e 100644
--- a/Lib/test/test__locale.py
+++ b/Lib/test/test__locale.py
@@ -97,6 +97,18 @@
                                                 loc, set_locale))
 
 
+    def test_float_parsing(self):
+        # Bug #1391872: Test whether float parsing is okay on European
+        # locales.
+        for loc in candidate_locales:
+            try:
+                setlocale(LC_NUMERIC, loc)
+            except Error:
+                continue
+            self.assertEquals(int(eval('3.14') * 100), 314)
+            self.assertEquals(int(float('3.14') * 100), 314)
+
+
 
 def test_main():
     run_unittest(_LocaleTests)
diff --git a/Python/ast.c b/Python/ast.c
index 93334dc..745cda2 100644
--- a/Python/ast.c
+++ b/Python/ast.c
@@ -2773,7 +2773,7 @@
 	if (imflag) {
 		c.real = 0.;
 		PyFPE_START_PROTECT("atof", return 0)
-		c.imag = atof(s);
+		c.imag = PyOS_ascii_atof(s);
 		PyFPE_END_PROTECT(c)
 		return PyComplex_FromCComplex(c);
 	}
@@ -2781,7 +2781,7 @@
 #endif
 	{
 		PyFPE_START_PROTECT("atof", return 0)
-		dx = atof(s);
+		dx = PyOS_ascii_atof(s);
 		PyFPE_END_PROTECT(dx)
 		return PyFloat_FromDouble(dx);
 	}