summaryrefslogtreecommitdiffstats
path: root/Python/formatter_unicode.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2018-01-15 14:58:02 (GMT)
committerGitHub <noreply@github.com>2018-01-15 14:58:02 (GMT)
commitcb064fc2321ce8673fe365e9ef60445a27657f54 (patch)
tree06356d6625f022636e22ed5e8646a3f2e36afac4 /Python/formatter_unicode.c
parent7ed7aead9503102d2ed316175f198104e0cd674c (diff)
downloadcpython-cb064fc2321ce8673fe365e9ef60445a27657f54.zip
cpython-cb064fc2321ce8673fe365e9ef60445a27657f54.tar.gz
cpython-cb064fc2321ce8673fe365e9ef60445a27657f54.tar.bz2
bpo-31900: Fix localeconv() encoding for LC_NUMERIC (#4174)
* 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.
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 397ae7f..71e673d 100644
--- a/Python/formatter_unicode.c
+++ b/Python/formatter_unicode.c
@@ -704,18 +704,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: