diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-07-14 10:13:41 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-07-16 07:18:23 +0200 |
commit | c5d6b263c204cb09db2be36826e19acb03dc24fb (patch) | |
tree | a587297faa804b29ed815a3ea6b164629947d22b /src/corelib/io/qprocess.cpp | |
parent | 2e5b8032a27f678b1f514c7402fe2a808e7fcdcc (diff) |
QProcessEnvironment: simplify locking
The mutex is only protecting 'nameMap'. Proof: it's only defined on
platforms on which there is a 'nameMap'. Also, nothing else is
mutable, so no lazy init going on here.
So, drop all the mutex protection, except where we access 'nameMap',
and draw the mutex as close as possible to the nameMap uses, iow: copy
ctor, prepareName() and nameToString().
As a consequence, the old (Ordered)MutexLocker class only needs to be
defined on Unix.
Change-Id: Ic969313bc48ad7ebf24c5dca7fd48359956b048d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/io/qprocess.cpp')
-rw-r--r-- | src/corelib/io/qprocess.cpp | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 0b964e6a21..35ca2542f7 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -202,6 +202,7 @@ void QProcessEnvironmentPrivate::insert(const QProcessEnvironmentPrivate &other) vars.insert(it.key(), it.value()); #ifdef Q_OS_UNIX + const OrderedNameMapMutexLocker locker(this, &other); auto nit = other.nameMap.constBegin(); const auto nend = other.nameMap.constEnd(); for ( ; nit != nend; ++nit) @@ -275,7 +276,6 @@ bool QProcessEnvironment::operator==(const QProcessEnvironment &other) const return true; if (d) { if (other.d) { - QProcessEnvironmentPrivate::OrderedMutexLocker locker(d, other.d); return d->vars == other.d->vars; } else { return isEmpty(); @@ -322,7 +322,6 @@ bool QProcessEnvironment::contains(const QString &name) const { if (!d) return false; - QProcessEnvironmentPrivate::MutexLocker locker(d); return d->vars.contains(d->prepareName(name)); } @@ -373,7 +372,6 @@ QString QProcessEnvironment::value(const QString &name, const QString &defaultVa if (!d) return defaultValue; - QProcessEnvironmentPrivate::MutexLocker locker(d); const auto it = d->vars.constFind(d->prepareName(name)); if (it == d->vars.constEnd()) return defaultValue; @@ -398,7 +396,6 @@ QStringList QProcessEnvironment::toStringList() const { if (!d) return QStringList(); - QProcessEnvironmentPrivate::MutexLocker locker(d); return d->toList(); } @@ -412,7 +409,6 @@ QStringList QProcessEnvironment::keys() const { if (!d) return QStringList(); - QProcessEnvironmentPrivate::MutexLocker locker(d); return d->keys(); } @@ -429,7 +425,6 @@ void QProcessEnvironment::insert(const QProcessEnvironment &e) return; // our re-impl of detach() detaches from null - QProcessEnvironmentPrivate::MutexLocker locker(e.d); d->insert(*e.d); } |