]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-34485: Emit C locale coercion warning later (GH-9002)
authorVictor Stinner <vstinner@redhat.com>
Wed, 29 Aug 2018 20:56:06 +0000 (22:56 +0200)
committerGitHub <noreply@github.com>
Wed, 29 Aug 2018 20:56:06 +0000 (22:56 +0200)
PYTHONCOERCELOCALE=warn warning is now emitted later and written into
sys.stderr, rather than being written into the C stderr stream.

Python/pylifecycle.c

index 6d97f2f24d5d1e3068c6d7412bfbe5937133602f..ad55b2c2c7870ce6f305792e03b8bab367750513 100644 (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();
 }