bpo-34170: _PyCoreConfig_Read() don't replace coerce_c_locale (GH-8658)
If coerce_c_locale is already set (>= 0), use its value: don't override it.
This commit is contained in:
parent
7b41dbad78
commit
5a953fd0ab
|
@ -373,6 +373,8 @@ dump_config(void)
|
||||||
printf("quiet = %i\n", config->quiet);
|
printf("quiet = %i\n", config->quiet);
|
||||||
printf("user_site_directory = %i\n", config->user_site_directory);
|
printf("user_site_directory = %i\n", config->user_site_directory);
|
||||||
printf("buffered_stdio = %i\n", config->buffered_stdio);
|
printf("buffered_stdio = %i\n", config->buffered_stdio);
|
||||||
|
ASSERT_EQUAL(config->buffered_stdio, !Py_UnbufferedStdioFlag);
|
||||||
|
|
||||||
/* FIXME: test legacy_windows_fs_encoding */
|
/* FIXME: test legacy_windows_fs_encoding */
|
||||||
/* FIXME: test legacy_windows_stdio */
|
/* FIXME: test legacy_windows_stdio */
|
||||||
|
|
||||||
|
|
|
@ -367,6 +367,8 @@ _PyCoreConfig_SetGlobalConfig(const _PyCoreConfig *config)
|
||||||
static _PyInitError
|
static _PyInitError
|
||||||
config_init_program_name(_PyCoreConfig *config)
|
config_init_program_name(_PyCoreConfig *config)
|
||||||
{
|
{
|
||||||
|
assert(config->program_name == NULL);
|
||||||
|
|
||||||
/* If Py_SetProgramName() was called, use its value */
|
/* If Py_SetProgramName() was called, use its value */
|
||||||
const wchar_t *program_name = _Py_path_config.program_name;
|
const wchar_t *program_name = _Py_path_config.program_name;
|
||||||
if (program_name != NULL) {
|
if (program_name != NULL) {
|
||||||
|
@ -665,6 +667,7 @@ config_read_env_vars(_PyCoreConfig *config)
|
||||||
config->malloc_stats = 1;
|
config->malloc_stats = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config->coerce_c_locale < 0) {
|
||||||
const char *env = _PyCoreConfig_GetEnv(config, "PYTHONCOERCECLOCALE");
|
const char *env = _PyCoreConfig_GetEnv(config, "PYTHONCOERCECLOCALE");
|
||||||
if (env) {
|
if (env) {
|
||||||
if (strcmp(env, "0") == 0) {
|
if (strcmp(env, "0") == 0) {
|
||||||
|
@ -677,6 +680,7 @@ config_read_env_vars(_PyCoreConfig *config)
|
||||||
config->coerce_c_locale = 1;
|
config->coerce_c_locale = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
wchar_t *path;
|
wchar_t *path;
|
||||||
int res = _PyCoreConfig_GetEnvDup(config, &path,
|
int res = _PyCoreConfig_GetEnvDup(config, &path,
|
||||||
|
@ -820,10 +824,6 @@ config_read_complex_options(_PyCoreConfig *config)
|
||||||
static void
|
static void
|
||||||
config_init_locale(_PyCoreConfig *config)
|
config_init_locale(_PyCoreConfig *config)
|
||||||
{
|
{
|
||||||
if (config->utf8_mode >= 0 && config->coerce_c_locale >= 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_Py_LegacyLocaleDetected()) {
|
if (_Py_LegacyLocaleDetected()) {
|
||||||
/* POSIX locale: enable C locale coercion and UTF-8 Mode */
|
/* POSIX locale: enable C locale coercion and UTF-8 Mode */
|
||||||
if (config->utf8_mode < 0) {
|
if (config->utf8_mode < 0) {
|
||||||
|
@ -832,7 +832,6 @@ config_init_locale(_PyCoreConfig *config)
|
||||||
if (config->coerce_c_locale < 0) {
|
if (config->coerce_c_locale < 0) {
|
||||||
config->coerce_c_locale = 1;
|
config->coerce_c_locale = 1;
|
||||||
}
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -909,7 +908,9 @@ _PyCoreConfig_Read(_PyCoreConfig *config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config->utf8_mode < 0 || config->coerce_c_locale < 0) {
|
||||||
config_init_locale(config);
|
config_init_locale(config);
|
||||||
|
}
|
||||||
|
|
||||||
if (config->_install_importlib) {
|
if (config->_install_importlib) {
|
||||||
err = _PyCoreConfig_InitPathConfig(config);
|
err = _PyCoreConfig_InitPathConfig(config);
|
||||||
|
|
|
@ -805,7 +805,6 @@ _Py_InitializeCore(PyInterpreterState **interp_p,
|
||||||
{
|
{
|
||||||
assert(src_config != NULL);
|
assert(src_config != NULL);
|
||||||
|
|
||||||
|
|
||||||
PyMemAllocatorEx old_alloc;
|
PyMemAllocatorEx old_alloc;
|
||||||
_PyInitError err;
|
_PyInitError err;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue