From ecdcf4e569a219900b8c1dae015cc1311c6cdd1b Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 29 Aug 2018 22:26:29 +0200 Subject: [PATCH] bpo-34485: Emit C locale coercion warning later PYTHONCOERCELOCALE=warn warning is now emitted later and written into sys.stderr, rather than being written into the C stderr stream. --- Python/pylifecycle.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 6d97f2f24d5d1e..ad55b2c2c7870c 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -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(); }