summaryrefslogtreecommitdiffstats
path: root/src/serialport/qserialport_win.cpp
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2013-11-12 13:19:20 +0400
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-28 20:50:13 +0100
commit7dcc5e422ce1ce3f29f52066f75f5dda3ffce5ef (patch)
tree4726030023c9f86a32ec8c4f8a5c8c612fc036d8 /src/serialport/qserialport_win.cpp
parent550a99c4785c9a5b69a1799ee4ba217a87aea49e (diff)
Clear unused members of the overlapped structure before each usage
For more detail, see remarks from the MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/ms684342%28v=vs.85%29.aspx Change-Id: Id6e5adc48e8a4648f1aabba598696b34c658a159 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
Diffstat (limited to 'src/serialport/qserialport_win.cpp')
-rw-r--r--src/serialport/qserialport_win.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp
index f8873dda..eef3d2b6 100644
--- a/src/serialport/qserialport_win.cpp
+++ b/src/serialport/qserialport_win.cpp
@@ -88,6 +88,14 @@ QT_BEGIN_NAMESPACE
#ifndef Q_OS_WINCE
+static void initializeOverlappedStructure(OVERLAPPED &overlapped)
+{
+ overlapped.Internal = 0;
+ overlapped.InternalHigh = 0;
+ overlapped.Offset = 0;
+ overlapped.OffsetHigh = 0;
+}
+
class AbstractOverlappedEventNotifier : public QWinEventNotifier
{
Q_OBJECT
@@ -144,6 +152,7 @@ public:
}
void startWaitCommEvent() {
+ initializeOverlappedStructure(o);
if (!::WaitCommEvent(dptr->descriptor, &triggeredEventMask, &o)) {
const QSerialPort::SerialPortError error = dptr->decodeSystemError();
if (error != QSerialPort::NoError) {
@@ -671,6 +680,7 @@ bool QSerialPortPrivate::startAsyncRead()
return false;
}
+ initializeOverlappedStructure(*n->overlappedPointer());
if (::ReadFile(descriptor, readChunkBuffer.data(), bytesToRead, NULL, n->overlappedPointer()))
return true;
@@ -710,6 +720,7 @@ bool QSerialPortPrivate::startAsyncWrite(int maxSize)
n->setEnabled(true);
+ initializeOverlappedStructure(*n->overlappedPointer());
if (::WriteFile(descriptor, ptr, nextSize, NULL, n->overlappedPointer()))
return true;