Unverified Kaydet (Commit) 73b00bec authored tarafından Victor Stinner's avatar Victor Stinner Kaydeden (comit) GitHub

bpo-34544: pymain_read_conf() don't change LC_ALL (GH-9045)

bpo-34485, bpo-34544: Again, pymain_read_conf() leaves LC_ALL locale
unchanged: only modify LC_CTYPE.
üst 2094c2be
...@@ -1291,18 +1291,7 @@ pymain_read_conf(_PyMain *pymain, _PyCoreConfig *config, ...@@ -1291,18 +1291,7 @@ pymain_read_conf(_PyMain *pymain, _PyCoreConfig *config,
int init_legacy_encoding = Py_LegacyWindowsFSEncodingFlag; int init_legacy_encoding = Py_LegacyWindowsFSEncodingFlag;
#endif #endif
_PyCoreConfig save_config = _PyCoreConfig_INIT; _PyCoreConfig save_config = _PyCoreConfig_INIT;
char *oldloc = NULL;
int res = -1; int res = -1;
oldloc = _PyMem_RawStrdup(setlocale(LC_ALL, NULL));
if (oldloc == NULL) {
pymain->err = _Py_INIT_NO_MEMORY();
goto done;
}
/* Reconfigure the locale to the default for this process */
_Py_SetLocaleFromEnv(LC_ALL);
int locale_coerced = 0; int locale_coerced = 0;
int loops = 0; int loops = 0;
...@@ -1311,6 +1300,9 @@ pymain_read_conf(_PyMain *pymain, _PyCoreConfig *config, ...@@ -1311,6 +1300,9 @@ pymain_read_conf(_PyMain *pymain, _PyCoreConfig *config,
goto done; goto done;
} }
/* Set LC_CTYPE to the user preferred locale */
_Py_SetLocaleFromEnv(LC_CTYPE);
while (1) { while (1) {
int utf8_mode = config->utf8_mode; int utf8_mode = config->utf8_mode;
int encoding_changed = 0; int encoding_changed = 0;
...@@ -1392,10 +1384,6 @@ pymain_read_conf(_PyMain *pymain, _PyCoreConfig *config, ...@@ -1392,10 +1384,6 @@ pymain_read_conf(_PyMain *pymain, _PyCoreConfig *config,
done: done:
_PyCoreConfig_Clear(&save_config); _PyCoreConfig_Clear(&save_config);
if (oldloc != NULL) {
setlocale(LC_ALL, oldloc);
PyMem_RawFree(oldloc);
}
Py_UTF8Mode = init_utf8_mode ; Py_UTF8Mode = init_utf8_mode ;
#ifdef MS_WINDOWS #ifdef MS_WINDOWS
Py_LegacyWindowsFSEncodingFlag = init_legacy_encoding; Py_LegacyWindowsFSEncodingFlag = init_legacy_encoding;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment