Skip to content

Commit

Permalink
bpo-34170: _PyCoreConfig_Read() don't replace coerce_c_locale (python…
Browse files Browse the repository at this point in the history
…GH-8658)

If coerce_c_locale is already set (>= 0), use its value: don't
override it.
  • Loading branch information
vstinner authored Aug 3, 2018
1 parent 7b41dba commit 5a953fd
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 17 deletions.
2 changes: 2 additions & 0 deletions Programs/_testembed.c
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,8 @@ dump_config(void)
printf("quiet = %i\n", config->quiet);
printf("user_site_directory = %i\n", config->user_site_directory);
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_stdio */

Expand Down
33 changes: 17 additions & 16 deletions Python/coreconfig.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,8 @@ _PyCoreConfig_SetGlobalConfig(const _PyCoreConfig *config)
static _PyInitError
config_init_program_name(_PyCoreConfig *config)
{
assert(config->program_name == NULL);

/* If Py_SetProgramName() was called, use its value */
const wchar_t *program_name = _Py_path_config.program_name;
if (program_name != NULL) {
Expand Down Expand Up @@ -665,16 +667,18 @@ config_read_env_vars(_PyCoreConfig *config)
config->malloc_stats = 1;
}

const char *env = _PyCoreConfig_GetEnv(config, "PYTHONCOERCECLOCALE");
if (env) {
if (strcmp(env, "0") == 0) {
config->coerce_c_locale = 0;
}
else if (strcmp(env, "warn") == 0) {
config->coerce_c_locale_warn = 1;
}
else {
config->coerce_c_locale = 1;
if (config->coerce_c_locale < 0) {
const char *env = _PyCoreConfig_GetEnv(config, "PYTHONCOERCECLOCALE");
if (env) {
if (strcmp(env, "0") == 0) {
config->coerce_c_locale = 0;
}
else if (strcmp(env, "warn") == 0) {
config->coerce_c_locale_warn = 1;
}
else {
config->coerce_c_locale = 1;
}
}
}

Expand Down Expand Up @@ -820,10 +824,6 @@ config_read_complex_options(_PyCoreConfig *config)
static void
config_init_locale(_PyCoreConfig *config)
{
if (config->utf8_mode >= 0 && config->coerce_c_locale >= 0) {
return;
}

if (_Py_LegacyLocaleDetected()) {
/* POSIX locale: enable C locale coercion and UTF-8 Mode */
if (config->utf8_mode < 0) {
Expand All @@ -832,7 +832,6 @@ config_init_locale(_PyCoreConfig *config)
if (config->coerce_c_locale < 0) {
config->coerce_c_locale = 1;
}
return;
}
}

Expand Down Expand Up @@ -909,7 +908,9 @@ _PyCoreConfig_Read(_PyCoreConfig *config)
}
}

config_init_locale(config);
if (config->utf8_mode < 0 || config->coerce_c_locale < 0) {
config_init_locale(config);
}

if (config->_install_importlib) {
err = _PyCoreConfig_InitPathConfig(config);
Expand Down
1 change: 0 additions & 1 deletion Python/pylifecycle.c
Original file line number Diff line number Diff line change
Expand Up @@ -805,7 +805,6 @@ _Py_InitializeCore(PyInterpreterState **interp_p,
{
assert(src_config != NULL);


PyMemAllocatorEx old_alloc;
_PyInitError err;

Expand Down

0 comments on commit 5a953fd

Please sign in to comment.