summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qmake/library/proitems.cpp3
-rw-r--r--src/corelib/io/qresource.cpp3
-rw-r--r--src/corelib/text/qstringlist.cpp3
-rw-r--r--src/corelib/tools/qduplicatetracker_p.h8
-rw-r--r--src/gui/text/unix/qfontconfigdatabase.cpp3
-rw-r--r--src/tools/moc/moc.cpp2
-rw-r--r--src/widgets/itemviews/qtreewidget.cpp3
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp3
-rw-r--r--tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp3
9 files changed, 16 insertions, 15 deletions
diff --git a/qmake/library/proitems.cpp b/qmake/library/proitems.cpp
index ba817596c5..a8f4dfe039 100644
--- a/qmake/library/proitems.cpp
+++ b/qmake/library/proitems.cpp
@@ -404,8 +404,7 @@ void ProStringList::removeEmpty()
void ProStringList::removeDuplicates()
{
- QDuplicateTracker<ProString> seen;
- seen.reserve(size());
+ QDuplicateTracker<ProString> seen(size());
removeIf([&](const ProString &s) { return seen.hasSeen(s); });
}
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index 936218608b..864fb7a5d9 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -416,8 +416,7 @@ void QResourcePrivate::ensureChildren() const
QString path = absoluteFilePath, k;
if (path.startsWith(QLatin1Char(':')))
path = path.mid(1);
- QDuplicateTracker<QString> kids;
- kids.reserve(related.size());
+ QDuplicateTracker<QString> kids(related.size());
QString cleaned = cleanPath(path);
for (int i = 0; i < related.size(); ++i) {
QResourceRoot *res = related.at(i);
diff --git a/src/corelib/text/qstringlist.cpp b/src/corelib/text/qstringlist.cpp
index 440e26bc89..c2eea609ea 100644
--- a/src/corelib/text/qstringlist.cpp
+++ b/src/corelib/text/qstringlist.cpp
@@ -648,8 +648,7 @@ qsizetype QtPrivate::QStringList_lastIndexOf(const QStringList *that, const QReg
*/
qsizetype QtPrivate::QStringList_removeDuplicates(QStringList *that)
{
- QDuplicateTracker<QString> seen;
- seen.reserve(that->size());
+ QDuplicateTracker<QString> seen(that->size());
return that->removeIf([&](const QString &s) { return seen.hasSeen(s); });
}
diff --git a/src/corelib/tools/qduplicatetracker_p.h b/src/corelib/tools/qduplicatetracker_p.h
index 7bc416140a..565d592ac2 100644
--- a/src/corelib/tools/qduplicatetracker_p.h
+++ b/src/corelib/tools/qduplicatetracker_p.h
@@ -106,6 +106,14 @@ class QDuplicateTracker {
Q_DISABLE_COPY_MOVE(QDuplicateTracker);
public:
QDuplicateTracker() = default;
+ explicit QDuplicateTracker(qsizetype n)
+#ifdef __cpp_lib_memory_resource
+ : set{size_t(n), &res}
+#else
+ : set{n}
+#endif
+ {}
+ Q_DECL_DEPRECATED_X("Pass the capacity to reserve() to the ctor instead.")
void reserve(qsizetype n) { set.reserve(n); }
[[nodiscard]] bool hasSeen(const T &s)
{
diff --git a/src/gui/text/unix/qfontconfigdatabase.cpp b/src/gui/text/unix/qfontconfigdatabase.cpp
index c9f3c3cb81..ee9d323747 100644
--- a/src/gui/text/unix/qfontconfigdatabase.cpp
+++ b/src/gui/text/unix/qfontconfigdatabase.cpp
@@ -810,8 +810,7 @@ QStringList QFontconfigDatabase::fallbacksForFamily(const QString &family, QFont
FcPatternDestroy(pattern);
if (fontSet) {
- QDuplicateTracker<QString> duplicates;
- duplicates.reserve(fontSet->nfont + 1);
+ QDuplicateTracker<QString> duplicates(fontSet->nfont + 1);
(void)duplicates.hasSeen(family.toCaseFolded());
for (int i = 0; i < fontSet->nfont; i++) {
FcChar8 *value = nullptr;
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index bce75644f5..d57e43b59d 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -1833,7 +1833,7 @@ void Moc::checkProperties(ClassDef *cdef)
// specify get function, for compatibiliy we accept functions
// returning pointers, or const char * for QByteArray.
//
- QDuplicateTracker<QByteArray> definedProperties;
+ QDuplicateTracker<QByteArray> definedProperties(cdef->propertyList.count());
for (int i = 0; i < cdef->propertyList.count(); ++i) {
PropertyDef &p = cdef->propertyList[i];
if (definedProperties.hasSeen(p.name)) {
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp
index b684282e9d..b9af2ce8af 100644
--- a/src/widgets/itemviews/qtreewidget.cpp
+++ b/src/widgets/itemviews/qtreewidget.cpp
@@ -3101,8 +3101,7 @@ QList<QTreeWidgetItem*> QTreeWidget::selectedItems() const
const QModelIndexList indexes = selectionModel()->selectedIndexes();
QList<QTreeWidgetItem*> items;
items.reserve(indexes.count());
- QDuplicateTracker<QTreeWidgetItem *> seen;
- seen.reserve(indexes.count());
+ QDuplicateTracker<QTreeWidgetItem *> seen(indexes.count());
for (const auto &index : indexes) {
QTreeWidgetItem *item = d->item(index);
if (item->isHidden() || seen.hasSeen(item))
diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp
index 226c1ecbf9..74037eba19 100644
--- a/src/widgets/styles/qstylesheetstyle.cpp
+++ b/src/widgets/styles/qstylesheetstyle.cpp
@@ -2625,8 +2625,7 @@ void QStyleSheetStyle::setProperties(QWidget *w)
{
// scan decls for final occurrence of each "qproperty"
- QDuplicateTracker<QString> propertySet;
- propertySet.reserve(decls.size());
+ QDuplicateTracker<QString> propertySet(decls.size());
for (int i = decls.count() - 1; i >= 0; --i) {
const QString property = decls.at(i).d->property;
if (!property.startsWith(QLatin1String("qproperty-"), Qt::CaseInsensitive))
diff --git a/tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp b/tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp
index f4f038ca94..6462ef0dd7 100644
--- a/tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp
+++ b/tests/auto/corelib/tools/qduplicatetracker/tst_qduplicatetracker.cpp
@@ -168,8 +168,7 @@ size_t qHash(const ConstructionCounted &c, std::size_t seed = 0)
void tst_QDuplicateTracker::appendTo_special()
{
- QDuplicateTracker<ConstructionCounted> tracker;
- tracker.reserve(3);
+ QDuplicateTracker<ConstructionCounted> tracker(3);
QVERIFY(!tracker.hasSeen(1));
QVERIFY(!tracker.hasSeen(2));
QVERIFY(!tracker.hasSeen(3));