bpo-35336: Fix PYTHONCOERCECLOCALE=1 (GH-10806)

Fix PYTHONCOERCECLOCALE=1 environment variable: only coerce the C
locale if the LC_CTYPE locale is "C".
This commit is contained in:
Victor Stinner 2018-11-30 11:34:47 +01:00 committed by GitHub
parent a407004391
commit 55e498058f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 4 deletions

View file

@ -1061,11 +1061,17 @@ config_read_complex_options(_PyCoreConfig *config)
static void
config_init_locale(_PyCoreConfig *config)
{
if (config->coerce_c_locale < 0) {
/* Test also if coerce_c_locale equals 1: PYTHONCOERCECLOCALE=1 doesn't
imply that the C locale is always coerced. It is only coerced if
if the LC_CTYPE locale is "C". */
if (config->coerce_c_locale != 0) {
/* The C locale enables the C locale coercion (PEP 538) */
if (_Py_LegacyLocaleDetected()) {
config->coerce_c_locale = 1;
}
else {
config->coerce_c_locale = 0;
}
}
#ifndef MS_WINDOWS
@ -1394,7 +1400,7 @@ _PyCoreConfig_Read(_PyCoreConfig *config)
}
}
if (config->utf8_mode < 0 || config->coerce_c_locale < 0) {
if (config->coerce_c_locale != 0 || config->utf8_mode < 0) {
config_init_locale(config);
}