From 164ec20b9ed3cfd1c1c705032902330b56b33850 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorbj=C3=B8rn=20Lindeijer?= <thorbjorn.lindeijer@nokia.com>
Date: Mon, 2 Feb 2009 12:14:59 +0100
Subject: [PATCH] Fixed crash on applying or changing settings

The m_page member used to access the widgets was deleted too early.
Deletion moved to finish() method.
---
 src/plugins/coreplugin/dialogs/shortcutsettings.cpp | 4 ++--
 src/plugins/coreplugin/generalsettings.cpp          | 7 ++++++-
 src/plugins/coreplugin/generalsettings.h            | 2 +-
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
index 6797a50888e..33d83f67efb 100644
--- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
+++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp
@@ -116,8 +116,6 @@ QWidget *ShortcutSettings::createPage(QWidget *parent)
 
     commandChanged(0);
 
-    delete m_page;
-
     return w;
 }
 
@@ -131,6 +129,8 @@ void ShortcutSettings::finish()
 {
     qDeleteAll(m_scitems);
     m_scitems.clear();
+
+    delete m_page;
 }
 
 bool ShortcutSettings::eventFilter(QObject *o, QEvent *e)
diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp
index b21db43fa35..f2b51c1204c 100644
--- a/src/plugins/coreplugin/generalsettings.cpp
+++ b/src/plugins/coreplugin/generalsettings.cpp
@@ -77,7 +77,7 @@ QWidget *GeneralSettings::createPage(QWidget *parent)
             this, SLOT(resetExternalEditor()));
     connect(m_page->helpExternalEditorButton, SIGNAL(clicked()),
             this, SLOT(showHelpForExternalEditor()));
-    delete m_page;
+
     return w;
 }
 
@@ -88,6 +88,11 @@ void GeneralSettings::apply()
     EditorManager::instance()->setExternalEditor(m_page->externalEditorEdit->text());
 }
 
+void GeneralSettings::finish()
+{
+    delete m_page;
+}
+
 void GeneralSettings::resetInterfaceColor()
 {
     m_page->colorButton->setColor(0x666666);
diff --git a/src/plugins/coreplugin/generalsettings.h b/src/plugins/coreplugin/generalsettings.h
index aff4d0c8809..f31edf2cfb4 100644
--- a/src/plugins/coreplugin/generalsettings.h
+++ b/src/plugins/coreplugin/generalsettings.h
@@ -56,7 +56,7 @@ public:
     QString trCategory() const;
     QWidget* createPage(QWidget *parent);
     void apply();
-    void finish() { }
+    void finish();
 
 private slots:
     void resetInterfaceColor();
-- 
GitLab