summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/tools')
-rw-r--r--tests/auto/corelib/tools/qhash/tst_qhash.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/auto/corelib/tools/qhash/tst_qhash.cpp b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
index d77160ba19..6ad7d15c77 100644
--- a/tests/auto/corelib/tools/qhash/tst_qhash.cpp
+++ b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
@@ -42,6 +42,7 @@ class tst_QHash : public QObject
private slots:
void insert1();
void erase();
+ void erase_edge_case();
void key();
void swap();
@@ -532,6 +533,24 @@ void tst_QHash::erase()
QVERIFY(mit == h2.end());
}
+/*
+ With a specific seed we could end up in a situation where, upon deleting the
+ last entry in a QHash, the returned iterator would not point to the end()
+ iterator.
+*/
+void tst_QHash::erase_edge_case()
+{
+ QHash<int, int> h1;
+ h1.reserve(2);
+ h1.d->seed = 10230148258692185509ull;
+ h1.insert(3, 4);
+ h1.insert(5, 6);
+ QHash<int, int>::iterator it1 = h1.begin();
+ ++it1;
+ it1 = h1.erase(it1);
+ QVERIFY(it1 == h1.end());
+}
+
void tst_QHash::key()
{
{