From 073d04f1c2c5dc7020469bfc92708dce634f4779 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 10 Jun 2010 14:16:24 +0200 Subject: QLocalSocket: don't emit readChannelFinished() twice on Windows Reviewed-by: ossi --- src/network/socket/qlocalsocket_win.cpp | 3 +++ tests/auto/qlocalsocket/tst_qlocalsocket.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp index aa597da..2223ebe 100644 --- a/src/network/socket/qlocalsocket_win.cpp +++ b/src/network/socket/qlocalsocket_win.cpp @@ -252,6 +252,9 @@ void QLocalSocketPrivate::startAsyncRead() { do { DWORD bytesToRead = checkPipeState(); + if (pipeClosed) + return; + if (bytesToRead == 0) { // There are no bytes in the pipe but we need to // start the overlapped read with some buffer size. diff --git a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp index 87a30c2..d2cba6e 100644 --- a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp +++ b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp @@ -1004,7 +1004,7 @@ void tst_QLocalSocket::writeToClientAndDisconnect() timeout -= timestep; } while (!readChannelFinishedSpy.count() && timeout > 0); - QVERIFY(!readChannelFinishedSpy.isEmpty()); + QCOMPARE(readChannelFinishedSpy.count(), 1); QCOMPARE(client.read(buffer, sizeof(buffer)), (qint64)sizeof(buffer)); QCOMPARE(client.state(), QLocalSocket::UnconnectedState); } -- cgit v0.12