diff options
-rw-r--r-- | src/serialport/qserialport_win.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp index 0e9e18bf..d0625839 100644 --- a/src/serialport/qserialport_win.cpp +++ b/src/serialport/qserialport_win.cpp @@ -635,14 +635,14 @@ bool QSerialPortPrivate::startAsyncRead() } } - char *ptr = readBuffer.reserve(bytesToRead); - AbstractOverlappedEventNotifier *n = lookupReadCompletionNotifier(); if (!n) { q_ptr->setError(QSerialPort::ResourceError); return false; } + char *ptr = readBuffer.reserve(bytesToRead); + if (::ReadFile(descriptor, ptr, bytesToRead, NULL, n->overlappedPointer())) return true; @@ -651,6 +651,8 @@ bool QSerialPortPrivate::startAsyncRead() if (error != QSerialPort::ResourceError) error = QSerialPort::ReadError; q_ptr->setError(error); + + readBuffer.truncate(actualReadBufferSize); return false; } |