summaryrefslogtreecommitdiffstats
path: root/Python/formatter_unicode.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2018-01-15 22:23:47 (GMT)
committerGitHub <noreply@github.com>2018-01-15 22:23:47 (GMT)
commit5f959c4f9eca404b8bc4bc6348fed27c4b907b89 (patch)
tree29b215542b7705687eb5644a0640896e587646b7 /Python/formatter_unicode.c
parentfb8569e36f2629654d5bc9c7ba05978edce408f4 (diff)
downloadcpython-5f959c4f9eca404b8bc4bc6348fed27c4b907b89.zip
cpython-5f959c4f9eca404b8bc4bc6348fed27c4b907b89.tar.gz
cpython-5f959c4f9eca404b8bc4bc6348fed27c4b907b89.tar.bz2
[3.6] bpo-31900: Fix localeconv() encoding for LC_NUMERIC (#4174) (#5192)
* Add _Py_GetLocaleconvNumeric() function: decode decimal_point and thousands_sep fields of localeconv() from the LC_NUMERIC encoding, rather than decoding from the LC_CTYPE encoding. * Modify locale.localeconv() and "n" formatter of str.format() (for int, float and complex to use _Py_GetLocaleconvNumeric() internally. (cherry picked from commit cb064fc2321ce8673fe365e9ef60445a27657f54)
Diffstat (limited to 'Python/formatter_unicode.c')
-rw-r--r--Python/formatter_unicode.c15
1 files changed, 4 insertions, 11 deletions
diff --git a/Python/formatter_unicode.c b/Python/formatter_unicode.c
index d2be76f..d3ef650 100644
--- a/Python/formatter_unicode.c
+++ b/Python/formatter_unicode.c
@@ -707,18 +707,11 @@ get_locale_info(enum LocaleType type, LocaleInfo *locale_info)
{
switch (type) {
case LT_CURRENT_LOCALE: {
- struct lconv *locale_data = localeconv();
- locale_info->decimal_point = PyUnicode_DecodeLocale(
- locale_data->decimal_point,
- NULL);
- if (locale_info->decimal_point == NULL)
+ if (_Py_GetLocaleconvNumeric(&locale_info->decimal_point,
+ &locale_info->thousands_sep,
+ &locale_info->grouping) < 0) {
return -1;
- locale_info->thousands_sep = PyUnicode_DecodeLocale(
- locale_data->thousands_sep,
- NULL);
- if (locale_info->thousands_sep == NULL)
- return -1;
- locale_info->grouping = locale_data->grouping;
+ }
break;
}
case LT_DEFAULT_LOCALE: