diff Python/pythonrun.c @ 61846:815ba3872f85

Issue #3798: sys.exit(message) writes the message to sys.stderr file, instead of the C file stderr, to use stderr encoding and error handler
author Victor Stinner <victor.stinner@haypocalc.com>
date Fri, 21 May 2010 23:45:42 +0000
parents deed5fce82d6
children a25ad9c4ace0
line wrap: on
line diff
--- a/Python/pythonrun.c	Fri May 21 22:52:10 2010 +0000
+++ b/Python/pythonrun.c	Fri May 21 23:45:42 2010 +0000
@@ -1386,10 +1386,12 @@
         exitcode = (int)PyLong_AsLong(value);
     else {
         PyObject *sys_stderr = PySys_GetObject("stderr");
-        if (sys_stderr != NULL)
-            PyObject_CallMethod(sys_stderr, "flush", NULL);
-        PyObject_Print(value, stderr, Py_PRINT_RAW);
-        fflush(stderr);
+        if (sys_stderr != NULL && sys_stderr != Py_None) {
+            PyFile_WriteObject(value, sys_stderr, Py_PRINT_RAW);
+        } else {
+            PyObject_Print(value, stderr, Py_PRINT_RAW);
+            fflush(stderr);
+        }
         PySys_WriteStderr("\n");
         exitcode = 1;
     }