summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-15 13:23:02 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-16 09:48:09 +0200
commitada6e4fbe9f363a33d4f9341bbc468d22c0c1442 (patch)
tree41abb0dfbd9c3dc5566d4679ceee6a6f673e97de /src/corelib
parentb002c48cc799ebe613ed5fadebd0f5956e214388 (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.cpp8
-rw-r--r--src/corelib/io/qurlquery.cpp14
-rw-r--r--src/corelib/text/qregularexpression.cpp6
-rw-r--r--src/corelib/time/qtimezone.cpp6
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.