diff options
author | Liang Qi <liang.qi@qt.io> | 2016-10-01 21:58:04 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-10-01 21:58:04 +0200 |
commit | f0482d704e3834f2199889f997b421c0171bd94f (patch) | |
tree | e18c050e92771e32e4ea259ad7ba170683403f7e | |
parent | b3d27c681ac216f82ea8b2de1e21858a6c2b7af0 (diff) | |
parent | 0d31e8cd10d09fd2b28052c89a4f96c32c104848 (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Change-Id: Iba3271a050240b60f21e1696af320fdf82a7dd34
-rw-r--r-- | src/serialbus/qcanbusframe.h | 7 | ||||
-rw-r--r-- | src/serialbus/qmodbusrtuserialmaster.cpp | 7 | ||||
-rw-r--r-- | src/serialbus/qmodbusrtuserialmaster_p.h | 5 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/serialbus/qcanbusframe.h b/src/serialbus/qcanbusframe.h index de11331..9b87f88 100644 --- a/src/serialbus/qcanbusframe.h +++ b/src/serialbus/qcanbusframe.h @@ -73,8 +73,10 @@ public: explicit QCanBusFrame(QCanBusFrame::FrameType type) : canId(0x0), isExtendedFrame(0x0), - version(0x0) + version(0x0), + extra(0x0) { + memset(reserved, 0, sizeof(reserved)); setFrameType(type); } @@ -101,10 +103,11 @@ public: format(DataFrame), isExtendedFrame((identifier & 0x1FFFF800U) ? 0x1 : 0x0), version(0x0), + extra(0x0), load(data) { Q_UNUSED(extra); - Q_UNUSED(reserved); + memset(reserved, 0, sizeof(reserved)); } bool isValid() const diff --git a/src/serialbus/qmodbusrtuserialmaster.cpp b/src/serialbus/qmodbusrtuserialmaster.cpp index 331e0ee..5a9555e 100644 --- a/src/serialbus/qmodbusrtuserialmaster.cpp +++ b/src/serialbus/qmodbusrtuserialmaster.cpp @@ -144,10 +144,15 @@ bool QModbusRtuSerialMaster::open() */ void QModbusRtuSerialMaster::close() { - if (state() == QModbusDevice::UnconnectedState) + if (state() == QModbusDevice::UnconnectedState || + state() == QModbusDevice::ClosingState) { return; + } + + setState(QModbusDevice::ClosingState); Q_D(QModbusRtuSerialMaster); + if (d->m_serialPort->isOpen()) d->m_serialPort->close(); diff --git a/src/serialbus/qmodbusrtuserialmaster_p.h b/src/serialbus/qmodbusrtuserialmaster_p.h index e7e9a92..c698ebc 100644 --- a/src/serialbus/qmodbusrtuserialmaster_p.h +++ b/src/serialbus/qmodbusrtuserialmaster_p.h @@ -216,8 +216,9 @@ public: QObject::connect(m_serialPort, &QSerialPort::aboutToClose, q, [this]() { Q_Q(QModbusRtuSerialMaster); - if (q->state() != QModbusDevice::ClosingState) - q->close(); + Q_UNUSED(q); // To avoid unused variable warning in release mode + Q_ASSERT(q->state() == QModbusDevice::ClosingState); + m_sendTimer.stop(); m_responseTimer.stop(); }); |