diff options
author | Liang Qi <liang.qi@qt.io> | 2018-01-18 18:04:08 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-01-18 18:11:34 +0100 |
commit | a2b88f9ba0ce2e03ffa73ba26e910e988db5d6c1 (patch) | |
tree | a0c539d40f2f165cefb07e231e9763cc795e8c01 /src | |
parent | ee70a3dc1dff15f6fc00ea979ae0c169e201acab (diff) | |
parent | 97d2deb55b854fd2b97efc0a5b41da28444c6e78 (diff) | |
download | qtwebchannel-5.10.tar.gz |
Merge remote-tracking branch 'origin/5.9' into 5.105.10
Conflicts:
.qmake.conf
Change-Id: Id5d79a1cd456c79ef35a323d1a8713facde2ef91
Diffstat (limited to 'src')
-rw-r--r-- | src/webchannel/qmetaobjectpublisher.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp index cfc6ad2..8e83237 100644 --- a/src/webchannel/qmetaobjectpublisher.cpp +++ b/src/webchannel/qmetaobjectpublisher.cpp @@ -664,9 +664,15 @@ void QMetaObjectPublisher::handleMessage(const QJsonObject &message, QWebChannel return; } - transport->sendMessage(createResponse(message.value(KEY_ID), - wrapResult(invokeMethod(object, message.value(KEY_METHOD).toInt(-1), - message.value(KEY_ARGS).toArray()), transport))); + QPointer<QMetaObjectPublisher> publisherExists(this); + QPointer<QWebChannelAbstractTransport> transportExists(transport); + QVariant result = + invokeMethod(object, + message.value(KEY_METHOD).toInt(-1), + message.value(KEY_ARGS).toArray()); + if (!publisherExists || !transportExists) + return; + transport->sendMessage(createResponse(message.value(KEY_ID), wrapResult(result, transport))); } else if (type == TypeConnectToSignal) { signalHandler.connectTo(object, message.value(KEY_SIGNAL).toInt(-1)); } else if (type == TypeDisconnectFromSignal) { |