From a0e306fc2ff5cc61bfd643390dba7dcb11dd2e15 Mon Sep 17 00:00:00 2001
From: kh1 <qt-info@nokia.com>
Date: Thu, 25 Feb 2010 17:32:30 +0100
Subject: [PATCH] Fix possible mem leak, spotted by Thorbjorn.

Reviewed-by: Thorbjorn
---
 .../qt4projectmanager/qt-maemo/maemomanager.cpp  | 16 +++++++---------
 .../qt4projectmanager/qt-maemo/maemomanager.h    |  2 --
 2 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
index 79b39b94dd6..47aa0df21b4 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
@@ -44,7 +44,6 @@
 #include <QtCore/QDir>
 #include <QtCore/QFile>
 #include <QtCore/QList>
-#include <QtCore/QMutexLocker>
 #include <QtCore/QTextStream>
 
 #include <QtGui/QAction>
@@ -52,8 +51,6 @@
 namespace Qt4ProjectManager {
     namespace Internal {
 
-
-QMutex MaemoManager::m_mutex;
 MaemoManager *MaemoManager::m_instance = 0;
 
 const QSize iconSize = QSize(24, 20);
@@ -65,7 +62,11 @@ MaemoManager::MaemoManager()
     , m_settingsPage(new MaemoSettingsPage(this))
     , m_qemuCommand(0)
 {
+    Q_ASSERT(!m_instance);
+
     m_instance = this;
+    MaemoDeviceConfigurations::instance(this);
+
     icon.addFile(":/qt-maemo/images/qemu-run.png", iconSize);
     icon.addFile(":/qt-maemo/images/qemu-stop.png", iconSize, QIcon::Normal,
         QIcon::On);
@@ -73,7 +74,6 @@ MaemoManager::MaemoManager()
     ExtensionSystem::PluginManager::instance()->addObject(m_runControlFactory);
     ExtensionSystem::PluginManager::instance()->addObject(m_runConfigurationFactory);
     ExtensionSystem::PluginManager::instance()->addObject(m_settingsPage);
-    MaemoDeviceConfigurations::instance(this);
 }
 
 MaemoManager::~MaemoManager()
@@ -81,15 +81,13 @@ MaemoManager::~MaemoManager()
     ExtensionSystem::PluginManager::instance()->removeObject(m_runControlFactory);
     ExtensionSystem::PluginManager::instance()->removeObject(m_runConfigurationFactory);
     ExtensionSystem::PluginManager::instance()->removeObject(m_settingsPage);
+
+    m_instance = 0;
 }
 
 MaemoManager &MaemoManager::instance()
 {
-    if (!m_instance) {
-        QMutexLocker _(&m_mutex);
-        if (!m_instance)
-            new MaemoManager;
-    }
+    Q_ASSERT(m_instance);
     return *m_instance;
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.h b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.h
index 8f67da6a9f8..a7a29214700 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.h
@@ -34,7 +34,6 @@
 
 #include <coreplugin/actionmanager/command.h>
 
-#include <QtCore/QMutex>
 #include <QtCore/QObject>
 #include <QtCore/QSet>
 
@@ -86,7 +85,6 @@ signals:
     void startStopQemu();
 
 private:
-    static QMutex m_mutex;
     static MaemoManager *m_instance;
 
     MaemoRunControlFactory *m_runControlFactory;
-- 
GitLab