From 8d03b5fdb232ddb8b5d3b27fd7627401dbd154f8 Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Mon, 16 Apr 2018 22:50:44 +0200 Subject: Prevent crashes by fixing mapping of transport to wrapped objects When an already-wrapped object was used by a secondary transport, the mapping was not updated. This could then lead to crashes when the transport was destroyed. [ChangeLog][General] Fix crash when wrapped objects are shared across multiple transports. Task-number: QTBUG-62388 Change-Id: I3c3b7302205e10f04695f1a202325704d90950d2 Reviewed-by: Kai Dohmen Reviewed-by: Simon Hausmann Reviewed-by: Frederik Gladhorn --- src/webchannel/qmetaobjectpublisher.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp index 8e83237..d107848 100644 --- a/src/webchannel/qmetaobjectpublisher.cpp +++ b/src/webchannel/qmetaobjectpublisher.cpp @@ -563,8 +563,10 @@ QJsonValue QMetaObjectPublisher::wrapResult(const QVariant &result, QWebChannelA } else if (wrappedObjects.contains(id)) { Q_ASSERT(object == wrappedObjects.value(id).object); // check if this transport is already assigned to the object - if (transport && !wrappedObjects.value(id).transports.contains(transport)) + if (transport && !wrappedObjects.value(id).transports.contains(transport)) { wrappedObjects[id].transports.append(transport); + transportedWrappedObjects.insert(transport, id); + } classInfo = wrappedObjects.value(id).classinfo; } -- cgit v1.2.1