diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h index 3d21e027a26..8e87fabfb01 100644 --- a/src/corelib/tools/qhash.h +++ b/src/corelib/tools/qhash.h @@ -1234,7 +1234,7 @@ public: typedef QKeyValueIterator key_value_iterator; // STL style - inline iterator begin() { detach(); return iterator(d->begin()); } + inline iterator begin() { if (!d) return iterator(); detach(); return iterator(d->begin()); } inline const_iterator begin() const noexcept { return d ? const_iterator(d->begin()): const_iterator(); } inline const_iterator cbegin() const noexcept { return d ? const_iterator(d->begin()): const_iterator(); } inline const_iterator constBegin() const noexcept { return d ? const_iterator(d->begin()): const_iterator(); } @@ -1982,7 +1982,7 @@ public: typedef QKeyValueIterator key_value_iterator; // STL style - inline iterator begin() { detach(); return iterator(d->begin()); } + inline iterator begin() { if (!d) return iterator(); detach(); return iterator(d->begin()); } inline const_iterator begin() const noexcept { return d ? const_iterator(d->begin()): const_iterator(); } inline const_iterator cbegin() const noexcept { return d ? const_iterator(d->begin()): const_iterator(); } inline const_iterator constBegin() const noexcept { return d ? const_iterator(d->begin()): const_iterator(); } diff --git a/tests/auto/corelib/tools/qhash/tst_qhash.cpp b/tests/auto/corelib/tools/qhash/tst_qhash.cpp index aa8ed99a3c3..59e8ed6b586 100644 --- a/tests/auto/corelib/tools/qhash/tst_qhash.cpp +++ b/tests/auto/corelib/tools/qhash/tst_qhash.cpp @@ -1675,9 +1675,9 @@ void iteratorsInEmptyHashTestMethod() QVERIFY(it7 == Iter()); QVERIFY(!hash3.isDetached()); - Iter it8 = hash3.begin(); // calls detach() + Iter it8 = hash3.begin(); QVERIFY(it8 == Iter()); - QVERIFY(hash3.isDetached()); + QVERIFY(!hash3.isDetached()); // No detach from empty hash just for iteration! } void tst_QHash::iteratorsInEmptyHash() @@ -1887,9 +1887,9 @@ void keyValueIteratorInEmptyHashTestMethod() QVERIFY(it5 == KeyValueIter()); QVERIFY(!hash3.isDetached()); - KeyValueIter it6 = hash3.keyValueBegin(); // calls detach() + KeyValueIter it6 = hash3.keyValueBegin(); QVERIFY(it6 == KeyValueIter()); - QVERIFY(hash3.isDetached()); + QVERIFY(!hash3.isDetached()); // No detach in empty hash just for iteration } void tst_QHash::keyValueIteratorInEmptyHash() diff --git a/tests/auto/corelib/tools/qset/tst_qset.cpp b/tests/auto/corelib/tools/qset/tst_qset.cpp index 07d182b9b3f..3ef061659dc 100644 --- a/tests/auto/corelib/tools/qset/tst_qset.cpp +++ b/tests/auto/corelib/tools/qset/tst_qset.cpp @@ -507,7 +507,7 @@ void tst_QSet::begin() QVERIFY(i == j); QVERIFY(k == j); QVERIFY(!set3.isDetached()); - QVERIFY(set4.isDetached()); + QVERIFY(!set4.isDetached()); // d-ptr is null } set4.insert(1);