summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/json/qjsonobject.cpp1
-rw-r--r--tests/auto/corelib/json/tst_qtjson.cpp10
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.);