summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/serialport/qserialport_win.cpp6
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;
}