summaryrefslogtreecommitdiff
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)
downloadqtserialport-fbf3a8f5d50b5ae2dc90ac0af840a36530df3395.tar.gz
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 7b7405e..4c8ad07 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 1e941a0..4af0ba4 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();