From e018b305f6a4049b8832f712482cafec6beef5b7 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Sat, 10 Nov 2007 00:30:14 +0000 Subject: Bug #1415 On Windows fileno(stdout) and fileno(stderr) can return an invalid file descriptor number (-2 on my machine). It happens only for pythonw.exe but not for python.exe. Catch the problem ASAP in PyFile_NewStdPrinter(). I've also removed the call to PyErr_BadInternalCall(). It was causing a seg fault because the exceptions aren't available yet. --- Objects/fileobject.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Objects/fileobject.c b/Objects/fileobject.c index c6c7d8e..c4feed1 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -352,8 +352,8 @@ PyFile_NewStdPrinter(int fd) { PyStdPrinter_Object *self; - if (fd != fileno(stdout) && fd != fileno(stderr)) { - PyErr_BadInternalCall(); + if ((fd != fileno(stdout) && fd != fileno(stderr)) || fd < 0) { + /* not enough infrastructure for PyErr_BadInternalCall() */ return NULL; } -- cgit v0.12