bpo-34485: Emit C locale coercion warning later (GH-9002)

PYTHONCOERCELOCALE=warn warning is now emitted later and written into
sys.stderr, rather than being written into the C stderr stream.
This commit is contained in:
Victor Stinner 2018-08-29 22:56:06 +02:00 committed by GitHub
parent 3d4226a832
commit cf21504194
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 8 deletions

View File

@ -301,10 +301,8 @@ static const char *_C_LOCALE_WARNING =
static void
_emit_stderr_warning_for_legacy_locale(const _PyCoreConfig *core_config)
{
if (core_config->coerce_c_locale_warn) {
if (_Py_LegacyLocaleDetected()) {
fprintf(stderr, "%s", _C_LOCALE_WARNING);
}
if (core_config->coerce_c_locale_warn && _Py_LegacyLocaleDetected()) {
PySys_FormatStderr("%s", _C_LOCALE_WARNING);
}
}
@ -567,10 +565,6 @@ _Py_InitializeCore_impl(PyInterpreterState **interp_p,
*/
_PyRuntime.finalizing = NULL;
#ifndef MS_WINDOWS
_emit_stderr_warning_for_legacy_locale(core_config);
#endif
err = _Py_HashRandomization_Init(core_config);
if (_Py_INIT_FAILED(err)) {
return err;
@ -867,6 +861,11 @@ _Py_InitializeMainInterpreter(PyInterpreterState *interp,
return err;
}
}
#ifndef MS_WINDOWS
_emit_stderr_warning_for_legacy_locale(core_config);
#endif
return _Py_INIT_OK();
}