mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
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.
This commit is contained in:
parent
2094c2bea4
commit
73b00becbd
1 changed files with 3 additions and 15 deletions
|
@ -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,
|
||||||
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,
|
||||||
|
|
||||||
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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue