Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
bpo-34170: _PyCoreConfig_Read() don't replace coerce_c_locale
If coerce_c_locale is already set (>= 0), use its value: don't
override it.
  • Loading branch information
vstinner committed Aug 3, 2018
commit a49fb75d680bb678f0f156728dfd13badbd1ff91
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