diff options
Diffstat (limited to 'src/serialport/qserialport_win.cpp')
-rw-r--r-- | src/serialport/qserialport_win.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp index 5411d17..111a8ce 100644 --- a/src/serialport/qserialport_win.cpp +++ b/src/serialport/qserialport_win.cpp @@ -403,10 +403,15 @@ bool QSerialPortPrivate::waitForReadyRead(int msecs) _q_completeAsyncCommunication(); } else if (triggeredEvent == readCompletionOverlapped.hEvent) { _q_completeAsyncRead(); - if (qint64(readBuffer.size()) != currentReadBufferSize) + const qint64 readBytesForOneReadOperation = qint64(readBuffer.size()) - currentReadBufferSize; + if (readBytesForOneReadOperation == ReadChunkSize) { currentReadBufferSize = readBuffer.size(); - else if (initialReadBufferSize != currentReadBufferSize) + } else if (readBytesForOneReadOperation == 0) { + if (initialReadBufferSize != currentReadBufferSize) + return true; + } else { return true; + } } else if (triggeredEvent == writeCompletionOverlapped.hEvent) { _q_completeAsyncWrite(); } else { |