diff options
author | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-04-10 15:41:47 +0200 |
---|---|---|
committer | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-04-10 15:42:22 +0200 |
commit | 90297a64f203959f90041887ea31f4bd04bc059a (patch) | |
tree | 86f8ad6a5af26fd618cdb2e20601e6df89ac94d6 /src/network | |
parent | 537a4bc4011d32de193dc31caf09a44c1810ab33 (diff) | |
parent | f273d6fbc02055ff3999adc0df76360ca0670435 (diff) |
Merge branch 'stable' into dev
Change-Id: Icff019d74ae04c628a80f66aa478e4db40fae464
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/bearer/qnetworkconfigmanager.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp index 49d6babb10..4f74936ac7 100644 --- a/src/network/bearer/qnetworkconfigmanager.cpp +++ b/src/network/bearer/qnetworkconfigmanager.cpp @@ -55,10 +55,13 @@ QT_BEGIN_NAMESPACE static QBasicAtomicPointer<QNetworkConfigurationManagerPrivate> connManager_ptr; +static QBasicAtomicInt appShutdown; static void connManager_cleanup() { // this is not atomic or thread-safe! + int shutdown = appShutdown.fetchAndStoreAcquire(1); + Q_ASSERT(shutdown == 0); QNetworkConfigurationManagerPrivate *cmp = connManager_ptr.fetchAndStoreAcquire(0); if (cmp) cmp->cleanup(); @@ -72,7 +75,8 @@ void QNetworkConfigurationManagerPrivate::addPostRoutine() QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate() { QNetworkConfigurationManagerPrivate *ptr = connManager_ptr.loadAcquire(); - if (!ptr) { + int shutdown = appShutdown.loadAcquire(); + if (!ptr && !shutdown) { static QBasicMutex connManager_mutex; QMutexLocker locker(&connManager_mutex); if (!(ptr = connManager_ptr.loadAcquire())) { |