From 00dac575a33e8cac22c87f787a1aedd9d4617b82 Mon Sep 17 00:00:00 2001 From: con Date: Wed, 28 Apr 2010 15:38:25 +0200 Subject: [PATCH] Don't delete members in DebuggerPlugin::shutdown. Do it in the destructor instead. Reviewed-by: hjk --- src/plugins/debugger/debuggermanager.cpp | 41 ++++++++++---------------------- src/plugins/debugger/debuggerplugin.cpp | 26 ++++++++++---------- 2 files changed, 25 insertions(+), 42 deletions(-) diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index 7457b90c22..3e2830e679 100644 --- a/src/plugins/debugger/debuggermanager.cpp +++ b/src/plugins/debugger/debuggermanager.cpp @@ -342,6 +342,19 @@ DebuggerManager::DebuggerManager(DebuggerPlugin *plugin) DebuggerManager::~DebuggerManager() { #define doDelete(ptr) delete ptr; ptr = 0 + doDelete(scriptEngine); + doDelete(pdbEngine); + doDelete(gdbEngine); + doDelete(cdbEngine); + + doDelete(d->m_breakHandler); + doDelete(d->m_threadsHandler); + doDelete(d->m_modulesHandler); + doDelete(d->m_registerHandler); + doDelete(d->m_snapshotHandler); + doDelete(d->m_stackHandler); + doDelete(d->m_watchHandler); + doDelete(gdbEngine); doDelete(scriptEngine); doDelete(cdbEngine); @@ -847,34 +860,6 @@ void DebuggerManager::shutdown() if (d->m_engine) d->m_engine->shutdown(); d->m_engine = 0; - - #define doDelete(ptr) delete ptr; ptr = 0 - doDelete(scriptEngine); - doDelete(pdbEngine); - doDelete(gdbEngine); - doDelete(cdbEngine); - - // Delete these manually before deleting the manager - // (who will delete the models for most views) - doDelete(d->m_breakWindow); - doDelete(d->m_modulesWindow); - doDelete(d->m_outputWindow); - doDelete(d->m_registerWindow); - doDelete(d->m_stackWindow); - doDelete(d->m_sourceFilesWindow); - doDelete(d->m_threadsWindow); - //doDelete(d->m_tooltipWindow); - doDelete(d->m_watchersWindow); - doDelete(d->m_localsWindow); - - doDelete(d->m_breakHandler); - doDelete(d->m_threadsHandler); - doDelete(d->m_modulesHandler); - doDelete(d->m_registerHandler); - doDelete(d->m_snapshotHandler); - doDelete(d->m_stackHandler); - doDelete(d->m_watchHandler); - #undef doDelete } void DebuggerManager::makeSnapshot() diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 64a433e9df..603349c76d 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -545,25 +545,11 @@ DebuggerPlugin::DebuggerPlugin() {} DebuggerPlugin::~DebuggerPlugin() -{} - -void DebuggerPlugin::shutdown() { - QTC_ASSERT(m_manager, /**/); - if (m_manager) - m_manager->shutdown(); - - writeSettings(); - - if (m_uiSwitcher) - m_uiSwitcher->shutdown(); - delete DebuggerSettings::instance(); removeObject(m_debugMode); - // FIXME: when using the line below, BreakWindow etc gets deleted twice. - // so better leak for now... delete m_debugMode; m_debugMode = 0; @@ -579,6 +565,18 @@ void DebuggerPlugin::shutdown() m_uiSwitcher = 0; } +void DebuggerPlugin::shutdown() +{ + QTC_ASSERT(m_manager, /**/); + if (m_manager) + m_manager->shutdown(); + + writeSettings(); + + if (m_uiSwitcher) + m_uiSwitcher->shutdown(); +} + static QString msgParameterMissing(const QString &a) { return DebuggerPlugin::tr("Option '%1' is missing the parameter.").arg(a); -- 2.11.0