From 00b759a8d06dbec42232b1b8748c0725da7ced00 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 21 Jan 2021 11:33:51 -0800 Subject: QJsonObject::take: add missing detach() call We were modifying shared objects. Pick-to: 6.0 5.15 Fixes: QTBUG-89625 Change-Id: Id6bc735b79cf4beb9454fffd165c56476a5dec04 Reviewed-by: Volker Hilsheimer Reviewed-by: Christian Ehrlicher --- tests/auto/corelib/serialization/json/tst_qtjson.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests/auto/corelib') diff --git a/tests/auto/corelib/serialization/json/tst_qtjson.cpp b/tests/auto/corelib/serialization/json/tst_qtjson.cpp index 792c3baa35..b5aa1d7331 100644 --- a/tests/auto/corelib/serialization/json/tst_qtjson.cpp +++ b/tests/auto/corelib/serialization/json/tst_qtjson.cpp @@ -58,6 +58,7 @@ private Q_SLOTS: void testNumberComparisons(); void testObjectSimple(); + void testObjectTakeDetach(); void testObjectSmallKeys(); void testObjectInsertCopies(); void testArraySimple(); @@ -575,6 +576,24 @@ void tst_QtJson::testObjectSimple() QCOMPARE(subvalue.toObject(), subobject); } +void tst_QtJson::testObjectTakeDetach() +{ + QJsonObject object1, object2; + object1["key1"] = 1; + object1["key2"] = 2; + object2 = object1; + + object1.take("key2"); + object1.remove("key1"); + QVERIFY(!object1.contains("key1")); + QVERIFY(object2.contains("key1")); + QVERIFY(object2.value("key1").isDouble()); + + QVERIFY(!object1.contains("key2")); + QVERIFY(object2.contains("key2")); + QVERIFY(object2.value("key2").isDouble()); +} + void tst_QtJson::testObjectSmallKeys() { QJsonObject data1; -- cgit v1.2.3