diff -r b72c6db6890b -r 5dc02b23752f src/corelib/io/qwindowspipewriter.cpp --- a/src/corelib/io/qwindowspipewriter.cpp Wed Jun 23 19:07:03 2010 +0300 +++ b/src/corelib/io/qwindowspipewriter.cpp Tue Jul 06 15:10:48 2010 +0300 @@ -40,6 +40,7 @@ ****************************************************************************/ #include "qwindowspipewriter_p.h" +#include QT_BEGIN_NAMESPACE @@ -100,7 +101,8 @@ void QWindowsPipeWriter::run() { - OVERLAPPED overl = {0, 0, 0, 0, NULL}; + OVERLAPPED overl; + memset(&overl, 0, sizeof overl); overl.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); forever { lock.lock(); @@ -126,11 +128,9 @@ overl.OffsetHigh = 0; while ((!quitNow) && totalWritten < maxlen) { DWORD written = 0; - // Write 2k at a time to prevent flooding the pipe. If you - // write too much (4k-8k), the pipe can close - // unexpectedly. if (!WriteFile(writePipe, ptrData + totalWritten, - qMin(2048, maxlen - totalWritten), &written, &overl)) { + maxlen - totalWritten, &written, &overl)) { + if (GetLastError() == 0xE8/*NT_STATUS_INVALID_USER_BUFFER*/) { // give the os a rest msleep(100);