summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@digia.com>2014-11-27 12:24:17 +0100
committerAndy Shaw <andy.shaw@digia.com>2014-11-27 13:22:47 +0100
commitfbf3a8f5d50b5ae2dc90ac0af840a36530df3395 (patch)
treecd64fefb815e3a4930fca5ccfac53eaa76ed5c4a
parentab51ad6a5f4e533c31bd8e5b6f16a3bcd09a3ee6 (diff)
Close the handle for the events that were created
The handles should be closed when QSerialPort is deleted in order to clean up the native resources. Change-Id: If04521fc0fa3b898093bda3317962b4c44818034 Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com> Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
-rw-r--r--src/serialport/qserialport_win.cpp10
-rw-r--r--src/serialport/qserialport_win_p.h1
2 files changed, 11 insertions, 0 deletions
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp
index 7b7405ed..4c8ad076 100644
--- a/src/serialport/qserialport_win.cpp
+++ b/src/serialport/qserialport_win.cpp
@@ -127,6 +127,16 @@ QSerialPortPrivate::QSerialPortPrivate(QSerialPort *q)
}
}
+QSerialPortPrivate::~QSerialPortPrivate()
+{
+ if (communicationOverlapped.hEvent)
+ CloseHandle(communicationOverlapped.hEvent);
+ if (readCompletionOverlapped.hEvent)
+ CloseHandle(readCompletionOverlapped.hEvent);
+ if (writeCompletionOverlapped.hEvent)
+ CloseHandle(writeCompletionOverlapped.hEvent);
+}
+
bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
{
Q_Q(QSerialPort);
diff --git a/src/serialport/qserialport_win_p.h b/src/serialport/qserialport_win_p.h
index 1e941a0b..4af0ba4c 100644
--- a/src/serialport/qserialport_win_p.h
+++ b/src/serialport/qserialport_win_p.h
@@ -63,6 +63,7 @@ class QSerialPortPrivate : public QSerialPortPrivateData
public:
QSerialPortPrivate(QSerialPort *q);
+ ~QSerialPortPrivate();
bool open(QIODevice::OpenMode mode);
void close();