diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2013-11-12 13:19:20 +0400 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-28 20:50:13 +0100 |
commit | 7dcc5e422ce1ce3f29f52066f75f5dda3ffce5ef (patch) | |
tree | 4726030023c9f86a32ec8c4f8a5c8c612fc036d8 /src/serialport/qserialport_win.cpp | |
parent | 550a99c4785c9a5b69a1799ee4ba217a87aea49e (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.cpp | 11 |
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; |