diff options
author | Brett Stottlemyer <bstottle@ford.com> | 2021-03-07 08:03:33 -0500 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-03-09 14:15:59 +0000 |
commit | aee2f28306491f25b7159c58904e708aaef4205b (patch) | |
tree | 24af11f5a04de95517792ec61027a7fa9637c01d | |
parent | 42ef6bf079bc5247e72f88dd61d24d9e11c9940e (diff) |
ExternalIODevice fixes
Make sure the input QIODevice is valid and the disconnect signal (if
available) is connected.
Task-number: QTBUG-84640
Change-Id: I9e65dc903ce0e92da4f4a1e07fd5d6b66815e2a4
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
(cherry picked from commit e910e445a4860467bc99e2bb446978fa790815dd)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/remoteobjects/qconnectionfactories.cpp | 2 | ||||
-rw-r--r-- | src/remoteobjects/qremoteobjectnode.cpp | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/remoteobjects/qconnectionfactories.cpp b/src/remoteobjects/qconnectionfactories.cpp index f1091fa..9ddea61 100644 --- a/src/remoteobjects/qconnectionfactories.cpp +++ b/src/remoteobjects/qconnectionfactories.cpp @@ -234,7 +234,7 @@ ExternalIoDevice::ExternalIoDevice(QIODevice *device, QObject *parent) connect(m_device.data(), &QIODevice::aboutToClose, this, [this]() { this->m_isClosing = true; }); connect(m_device.data(), &QIODevice::readyRead, this, &ExternalIoDevice::readyRead); auto meta = device->metaObject(); - if (-1 == meta->indexOfSignal(SIGNAL(disconnected()))) + if (-1 != meta->indexOfSignal(SIGNAL(disconnected()))) connect(m_device.data(), SIGNAL(disconnected()), this, SIGNAL(disconnected())); } diff --git a/src/remoteobjects/qremoteobjectnode.cpp b/src/remoteobjects/qremoteobjectnode.cpp index 6e9d25f..e918b10 100644 --- a/src/remoteobjects/qremoteobjectnode.cpp +++ b/src/remoteobjects/qremoteobjectnode.cpp @@ -2068,6 +2068,10 @@ bool QRemoteObjectNode::connectToNode(const QUrl &address) void QRemoteObjectNode::addClientSideConnection(QIODevice *ioDevice) { Q_D(QRemoteObjectNode); + if (!ioDevice || !ioDevice->isOpen()) { + qWarning() << "A null or closed QIODevice was passed to addClientSideConnection(). Ignoring."; + return; + } ExternalIoDevice *device = new ExternalIoDevice(ioDevice, this); connect(device, &IoDeviceBase::readyRead, this, [d, device]() { d->onClientRead(device); @@ -2317,6 +2321,10 @@ bool QRemoteObjectHostBase::disableRemoting(QObject *remoteObject) void QRemoteObjectHostBase::addHostSideConnection(QIODevice *ioDevice) { Q_D(QRemoteObjectHostBase); + if (!ioDevice || !ioDevice->isOpen()) { + qWarning() << "A null or closed QIODevice was passed to addHostSideConnection(). Ignoring."; + return; + } if (!d->remoteObjectIo) d->remoteObjectIo = new QRemoteObjectSourceIo(this); ExternalIoDevice *device = new ExternalIoDevice(ioDevice, this); |