diff options
Diffstat (limited to 'src/serialport/qserialport_win.cpp')
-rw-r--r-- | src/serialport/qserialport_win.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp index b01d2d0e..57b70966 100644 --- a/src/serialport/qserialport_win.cpp +++ b/src/serialport/qserialport_win.cpp @@ -426,18 +426,20 @@ bool QSerialPortPrivate::completeAsyncRead(qint64 bytesTransferred) if (bytesTransferred > 0) { char *ptr = buffer.reserve(bytesTransferred); ::memcpy(ptr, readChunkBuffer.constData(), bytesTransferred); - if (!emulateErrorPolicy()) - emitReadyRead(); } readStarted = false; + bool result = true; if ((bytesTransferred == ReadChunkSize) && (policy == QSerialPort::IgnorePolicy)) - return startAsyncRead(); + result = startAsyncRead(); else if (readBufferMaxSize == 0 || readBufferMaxSize > buffer.size()) - return startAsyncCommunication(); - else - return true; + result = startAsyncCommunication(); + + if ((bytesTransferred > 0) && !emulateErrorPolicy()) + emitReadyRead(); + + return result; } bool QSerialPortPrivate::completeAsyncWrite(qint64 bytesTransferred) |