OSDN Git Service

Fix potential crash when closing settings dialog.
authorcon <qtc-committer@nokia.com>
Thu, 21 Oct 2010 12:10:31 +0000 (14:10 +0200)
committercon <qtc-committer@nokia.com>
Thu, 21 Oct 2010 12:11:57 +0000 (14:11 +0200)
We accessed the m_applied member after the dialog already was deleted.

Task-number: QTCREATORBUG-2844
Reviewed-by: Friedemann Kleint
src/plugins/coreplugin/dialogs/settingsdialog.cpp

index 3f2790a..a87f812 100644 (file)
@@ -314,7 +314,6 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
                 m_proxyModel, SLOT(setFilterFixedString(QString)));
     connect(m_filterLineEdit, SIGNAL(filterChanged(QString)), this, SLOT(filter(QString)));
     m_categoryList->setFocus();
-    setAttribute(Qt::WA_DeleteOnClose);
 }
 
 void SettingsDialog::showPage(const QString &categoryId, const QString &pageId)
@@ -522,6 +521,11 @@ bool SettingsDialog::execDialog()
     if (!m_running) {
         m_running = true;
         exec();
+        m_running = false;
+        m_instance = 0;
+        // make sure that the current "single" instance is deleted
+        // we can't delete right away, since we still access the m_applied member
+        deleteLater();
     } else {
         // exec dialog is called while the instance is already running
         // this can happen when a event triggers a code path that wants to