From faabe90b69551e14317d85f376f040a3dc3ae0bd Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Tue, 16 Jun 2009 11:11:18 +1000 Subject: Fixes crash of qmake on Windows Vista Business x64 (and undefined behavior on all versions of Windows). setvbuf handles its arguments differently on Unix and Windows. Windows uses the size parameter when the given buffer is NULL, which appears to violate C89/C99. Giving a size parameter of 0 with a NULL buffer caused qmake to crash on Windows Vista Business x64. Windows also can't set line buffering with setvbuf _at all_ according to the MSDN documentation, so don't bother calling it on Windows. --- qmake/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qmake/main.cpp b/qmake/main.cpp index 7da66ac..f311699 100644 --- a/qmake/main.cpp +++ b/qmake/main.cpp @@ -84,12 +84,14 @@ bool qmake_setpwd(const QString &p) int runQMake(int argc, char **argv) { +#ifndef Q_OS_WIN32 // stderr is unbuffered by default, but stdout buffering depends on whether // there is a terminal attached. Buffering can make output from stderr and stdout // appear out of sync, so force stdout to be line buffered to minimize this without // hurting performance too much (if at all). This is particularly important for // things like QtCreator and scripted builds. setvbuf(stdout, (char *)NULL, _IOLBF, 0); +#endif // parse command line int ret = Option::init(argc, argv); -- cgit v0.12