Fix QMultiHash::equal_range crashes
QMultiHash::equal_range crashes when called in a const member function. The Data `d` is a NULL pointer when calling equal_range() before inserting data into an empty QMultiHash. Then calling`d->find` crashes. Fixes: QTBUG-89687 Change-Id: I10c3d196cbc72aed8c8c922ef16534bba51037b7 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 22416ecaaf58619c716229b71cdca558fda0a861) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
91a97187ac
commit
7b356d7367
@ -1849,6 +1849,9 @@ public:
|
||||
|
||||
QPair<const_iterator, const_iterator> equal_range(const Key &key) const noexcept
|
||||
{
|
||||
if (!d)
|
||||
return qMakePair(end(), end());
|
||||
|
||||
auto it = d->find(key);
|
||||
if (it.isUnused())
|
||||
return qMakePair(end(), end());
|
||||
|
@ -1731,6 +1731,13 @@ void tst_QHash::equal_range()
|
||||
QVERIFY(p2.first == cm1.cbegin() || p2.second == cm1.cend());
|
||||
}
|
||||
|
||||
{
|
||||
const QMultiHash<int, int> cm2;
|
||||
auto p1 = cm2.equal_range(0);
|
||||
QVERIFY(p1.first == cm2.end());
|
||||
QVERIFY(p1.second == cm2.end());
|
||||
}
|
||||
|
||||
QMultiHash<int, int> h2;
|
||||
for (int i = 0; i < 8; ++i)
|
||||
for (int j = 0; j < 8; ++j)
|
||||
|
Loading…
x
Reference in New Issue
Block a user