diff options
-rw-r--r-- | src/corelib/json/qjsonobject.cpp | 1 | ||||
-rw-r--r-- | tests/auto/corelib/json/tst_qtjson.cpp | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/corelib/json/qjsonobject.cpp b/src/corelib/json/qjsonobject.cpp index 5439855b90..8801e9c96d 100644 --- a/src/corelib/json/qjsonobject.cpp +++ b/src/corelib/json/qjsonobject.cpp @@ -452,6 +452,7 @@ QJsonObject::iterator QJsonObject::find(const QString &key) int index = o ? o->indexOf(key, &keyExists) : 0; if (!keyExists) return end(); + detach(); return iterator(this, index); } diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp index 00810889bb..5498c890fe 100644 --- a/tests/auto/corelib/json/tst_qtjson.cpp +++ b/tests/auto/corelib/json/tst_qtjson.cpp @@ -590,6 +590,16 @@ void TestQtJson::testObjectIteration() } { + QJsonObject object2 = object; + QVERIFY(object == object2); + + QJsonObject::iterator it = object2.find(QString::number(5)); + object2.erase(it); + QCOMPARE(object.size(), 10); + QCOMPARE(object2.size(), 9); + } + + { QJsonObject::Iterator it = object.begin(); it += 5; QCOMPARE(QJsonValue(it.value()).toDouble(), 5.); |