◐ Shell
clean mode source ↗

bpo-34544: _Py_CoerceLegacyLocale() restores LC_CTYPE on fail by vstinner · Pull Request #9044 · python/cpython

Expand Up @@ -363,6 +363,13 @@ void _Py_CoerceLegacyLocale(int warn) { #ifdef PY_COERCE_C_LOCALE char *oldloc = NULL;
oldloc = _PyMem_RawStrdup(setlocale(LC_CTYPE, NULL)); if (oldloc == NULL) { return; }
const char *locale_override = getenv("LC_ALL"); if (locale_override == NULL || *locale_override == '\0') { /* LC_ALL is also not set (or is set to an empty string) */ Expand All @@ -384,11 +391,16 @@ defined(HAVE_LANGINFO_H) && defined(CODESET) #endif /* Successfully configured locale, so make it the default */ _coerce_default_locale_settings(warn, target); return; goto done; } } } /* No C locale warning here, as Py_Initialize will emit one later */
setlocale(LC_CTYPE, oldloc);
done: PyMem_RawFree(oldloc); #endif }
Expand Down