summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-01-20 22:46:51 +0100
committerLiang Qi <liang.qi@qt.io>2018-01-20 23:22:30 +0100
commitf1a65fe2e8294f9a42f360cf13539735211e5878 (patch)
tree3a84e11f4afdc8ff368b9255a2b0f6ca26269817 /src
parent0da37161ef304f9b8d45d1ebe396f7758700fe07 (diff)
parenta2b88f9ba0ce2e03ffa73ba26e910e988db5d6c1 (diff)
downloadqtwebchannel-f1a65fe2e8294f9a42f360cf13539735211e5878.tar.gz
Merge remote-tracking branch 'origin/5.10' into dev
Conflicts: tests/auto/webchannel/tst_webchannel.h Change-Id: I454c1bbab153405541e7fc41d1389a810b94f2db
Diffstat (limited to 'src')
-rw-r--r--src/webchannel/qmetaobjectpublisher.cpp12
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) {