aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorArno Rehn <a.rehn@menlosystems.com>2020-08-10 21:52:14 +0200
committerArno Rehn <a.rehn@menlosystems.com>2020-08-17 10:37:25 +0200
commit0451ef836415c93a6beb68a315a25c6ab27f44fa (patch)
tree9d92d880616a24af4b5ca381a317750cfd8ca954 /tests
parenta1d717d881f6f1e72cf2643826b6025c1d16d7f6 (diff)
Fix infinite recursion when wrapping a self-contained object twice
The previous unit test for self-contained objects only wrapped the test object once. After wrapping, a different code path is taken which still exhibited infinite recursion. This patch addresses both the unit test and the infinite recursion. To fix the problem, a boolean in the ObjectInfo struct is toggled to indicate whether the object in question is currently being wrapped. If that is the case, the recursing code path is skipped. [ChangeLog][General] Fixed infinite recursion when dealing with self contained objects. Fixes: QTBUG-84007 Pick-to: 5.15 Change-Id: Ie0898fb5f28cec91587897835ff937672d60f2a1 Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/webchannel/tst_webchannel.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/tests/auto/webchannel/tst_webchannel.cpp b/tests/auto/webchannel/tst_webchannel.cpp
index f5df593..4941a7b 100644
--- a/tests/auto/webchannel/tst_webchannel.cpp
+++ b/tests/auto/webchannel/tst_webchannel.cpp
@@ -936,6 +936,9 @@ void TestWebChannel::testInfiniteRecursion()
channel.d_func()->publisher->initializeClient(m_dummyTransport);
QJsonObject objectInfo = channel.d_func()->publisher->wrapResult(QVariant::fromValue(&obj), m_dummyTransport).toObject();
+
+ // Wrap the result twice to test for QTBUG-84007. A single result wrap will not trigger all recursion paths.
+ objectInfo = channel.d_func()->publisher->wrapResult(QVariant::fromValue(&obj), m_dummyTransport).toObject();
}
void TestWebChannel::testAsyncObject()