From 684267179e3deb4de8af7a4b8b01948dc6676a79 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 16 Jun 2015 15:24:42 +0200 Subject: Properly delete plugins dependent on failed plugin Init all class member pointers to NULL. This fixes possible crash on exit when dependent plugin was not loaded (e.g. TextEditor was missing). In this case plugin's constructor gets called, initialize() method is _not_ called and destructor gets called -> crash. Properly delete dependent plugins on a plugin which failed to initialize properly. Fix labels of deleted plugins inside an error dialog after pressing "Error Details" from "Installed Plugins" dialog. Change-Id: Iddc029a0f07dcba2501d734d142fb0e69e9383d3 Reviewed-by: Eike Ziller --- src/plugins/cpptools/cpptoolsplugin.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/plugins/cpptools/cpptoolsplugin.cpp') diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp index c125492950..1719a085f9 100644 --- a/src/plugins/cpptools/cpptoolsplugin.cpp +++ b/src/plugins/cpptools/cpptoolsplugin.cpp @@ -93,7 +93,6 @@ CppToolsPlugin::CppToolsPlugin() CppToolsPlugin::~CppToolsPlugin() { m_instance = 0; - delete CppModelManager::instance(); } CppToolsPlugin *CppToolsPlugin::instance() @@ -141,6 +140,8 @@ bool CppToolsPlugin::initialize(const QStringList &arguments, QString *error) Q_UNUSED(arguments) Q_UNUSED(error) + CppModelManager::instance()->setParent(this); + m_settings = new CppToolsSettings(this); // force registration of cpp tools settings // Objects -- cgit v1.2.1