diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-15 13:23:02 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-16 09:48:09 +0200 |
commit | ada6e4fbe9f363a33d4f9341bbc468d22c0c1442 (patch) | |
tree | 41abb0dfbd9c3dc5566d4679ceee6a6f673e97de /src/corelib | |
parent | b002c48cc799ebe613ed5fadebd0f5956e214388 (diff) |
Fix some bad uses of QSharedPointerData::operator T*
Avoid detaching where possible
Change-Id: I438d3e66689aeef05951af86a48af2a6910da7c2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/io/qprocess.cpp | 8 | ||||
-rw-r--r-- | src/corelib/io/qurlquery.cpp | 14 | ||||
-rw-r--r-- | src/corelib/text/qregularexpression.cpp | 6 | ||||
-rw-r--r-- | src/corelib/time/qtimezone.cpp | 6 |
4 files changed, 18 insertions, 16 deletions
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 826f421eee..8b29a8964f 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -290,7 +290,7 @@ bool QProcessEnvironment::isEmpty() const */ void QProcessEnvironment::clear() { - if (d) + if (d.constData()) d->vars.clear(); // Unix: Don't clear d->nameMap, as the environment is likely to be // re-populated with the same keys again. @@ -339,9 +339,9 @@ void QProcessEnvironment::insert(const QString &name, const QString &value) */ void QProcessEnvironment::remove(const QString &name) { - if (d) { - d.detach(); // detach before prepareName() - d->vars.remove(d->prepareName(name)); + if (d.constData()) { + QProcessEnvironmentPrivate *p = d.data(); + p->vars.remove(p->prepareName(name)); } } diff --git a/src/corelib/io/qurlquery.cpp b/src/corelib/io/qurlquery.cpp index b889eb131b..a836fb2e99 100644 --- a/src/corelib/io/qurlquery.cpp +++ b/src/corelib/io/qurlquery.cpp @@ -743,9 +743,10 @@ QStringList QUrlQuery::allQueryItemValues(const QString &key, QUrl::ComponentFor void QUrlQuery::removeQueryItem(const QString &key) { if (d.constData()) { - Map::iterator it = d->findKey(key); - if (it != d->itemList.end()) - d->itemList.erase(it); + auto *p = d.data(); + Map::iterator it = p->findKey(key); + if (it != p->itemList.end()) + p->itemList.erase(it); } } @@ -758,12 +759,13 @@ void QUrlQuery::removeQueryItem(const QString &key) void QUrlQuery::removeAllQueryItems(const QString &key) { if (d.constData()) { - const QString encodedKey = d->recodeFromUser(key); + auto *p = d.data(); + const QString encodedKey = p->recodeFromUser(key); auto firstEqualsEncodedKey = [&encodedKey](const QPair<QString, QString> &item) { return item.first == encodedKey; }; - const auto end = d->itemList.end(); - d->itemList.erase(std::remove_if(d->itemList.begin(), end, firstEqualsEncodedKey), end); + const auto end = p->itemList.end(); + p->itemList.erase(std::remove_if(p->itemList.begin(), end, firstEqualsEncodedKey), end); } } diff --git a/src/corelib/text/qregularexpression.cpp b/src/corelib/text/qregularexpression.cpp index 1ca1cadaa3..45ed3f806a 100644 --- a/src/corelib/text/qregularexpression.cpp +++ b/src/corelib/text/qregularexpression.cpp @@ -2569,11 +2569,11 @@ QRegularExpressionMatch QRegularExpressionMatchIterator::next() { if (!hasNext()) { qWarning("QRegularExpressionMatchIterator::next() called on an iterator already at end"); - return d->next; + return d.constData()->next; } - QRegularExpressionMatch current = d->next; - d->next = d->next.d.constData()->nextMatch(); + QRegularExpressionMatch current = d.constData()->next; + d->next = current.d.constData()->nextMatch(); return current; } diff --git a/src/corelib/time/qtimezone.cpp b/src/corelib/time/qtimezone.cpp index e95700c64b..5f4589eda0 100644 --- a/src/corelib/time/qtimezone.cpp +++ b/src/corelib/time/qtimezone.cpp @@ -112,7 +112,7 @@ public: // isTimeZoneIdAvailable() and to create named IANA time zones. This is usually the host // system, but may be different if the host resources are insufficient or if // QT_NO_SYSTEMLOCALE is set. A simple UTC backend is used if no alternative is available. - QSharedDataPointer<QTimeZonePrivate> backend; + QExplicitlySharedDataPointer<QTimeZonePrivate> backend; }; Q_GLOBAL_STATIC(QTimeZoneSingleton, global_tz); @@ -339,11 +339,11 @@ QTimeZone::QTimeZone(const QByteArray &ianaId) d = new QUtcTimeZonePrivate(ianaId); // If not a CLDR UTC offset ID then try creating it with the system backend. // Relies on backend not creating valid TZ with invalid name. - if (!d->isValid()) + if (!d.constData()->isValid()) d = ianaId.isEmpty() ? newBackendTimeZone() : newBackendTimeZone(ianaId); // Can also handle UTC with arbitrary (valid) offset, but only do so as // fall-back, since either of the above may handle it more informatively. - if (!d->isValid()) { + if (!d.constData()->isValid()) { qint64 offset = QUtcTimeZonePrivate::offsetFromUtcString(ianaId); if (offset != QTimeZonePrivate::invalidSeconds()) { // Should have abs(offset) < 24 * 60 * 60 = 86400. |