OSDN Git Service

avoid lock in QBearerEngine::configurationsInUse()
authorIvailo Monev <xakepa10@laimg.moc>
Thu, 25 Jul 2019 13:12:35 +0000 (13:12 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Thu, 25 Jul 2019 13:12:35 +0000 (13:12 +0000)
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
src/network/bearer/qbearerengine.cpp
src/network/bearer/qbearerengine_p.h

index 02ba1b7..24ecd0e 100644 (file)
@@ -52,6 +52,8 @@ QBearerEngine::QBearerEngine(QObject *parent)
 
 QBearerEngine::~QBearerEngine()
 {
+    QMutexLocker locker(&mutex);
+
     QHash<QString, QNetworkConfigurationPrivatePointer>::Iterator it;
     QHash<QString, QNetworkConfigurationPrivatePointer>::Iterator end;
 
@@ -92,8 +94,6 @@ bool QBearerEngine::configurationsInUse() const
     QHash<QString, QNetworkConfigurationPrivatePointer>::ConstIterator it;
     QHash<QString, QNetworkConfigurationPrivatePointer>::ConstIterator end;
 
-    QMutexLocker locker(&mutex);
-
     for (it = accessPointConfigurations.constBegin(),
          end = accessPointConfigurations.constEnd(); it != end; ++it) {
         if (it.value()->ref > 1)
index f650c9a..3dd8340 100644 (file)
@@ -98,7 +98,7 @@ protected:
     QHash<QString, QNetworkConfigurationPrivatePointer> snapConfigurations;
     QHash<QString, QNetworkConfigurationPrivatePointer> userChoiceConfigurations;
 
-    mutable QMutex mutex;
+    QMutex mutex;
 };
 
 QT_END_NAMESPACE