Commit 921c8e0e authored by Fredrik Lundh's avatar Fredrik Lundh

SF#1391872

Floating point literals don't work in non-US locale in 2.5.  Patch and
new locale tests by Hye-Shik Chang.
parent 5be8a591
...@@ -97,6 +97,18 @@ class _LocaleTests(unittest.TestCase): ...@@ -97,6 +97,18 @@ class _LocaleTests(unittest.TestCase):
loc, set_locale)) 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(): def test_main():
run_unittest(_LocaleTests) run_unittest(_LocaleTests)
......
...@@ -2773,7 +2773,7 @@ parsenumber(const char *s) ...@@ -2773,7 +2773,7 @@ parsenumber(const char *s)
if (imflag) { if (imflag) {
c.real = 0.; c.real = 0.;
PyFPE_START_PROTECT("atof", return 0) PyFPE_START_PROTECT("atof", return 0)
c.imag = atof(s); c.imag = PyOS_ascii_atof(s);
PyFPE_END_PROTECT(c) PyFPE_END_PROTECT(c)
return PyComplex_FromCComplex(c); return PyComplex_FromCComplex(c);
} }
...@@ -2781,7 +2781,7 @@ parsenumber(const char *s) ...@@ -2781,7 +2781,7 @@ parsenumber(const char *s)
#endif #endif
{ {
PyFPE_START_PROTECT("atof", return 0) PyFPE_START_PROTECT("atof", return 0)
dx = atof(s); dx = PyOS_ascii_atof(s);
PyFPE_END_PROTECT(dx) PyFPE_END_PROTECT(dx)
return PyFloat_FromDouble(dx); return PyFloat_FromDouble(dx);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment