From 20bd37f747e84c5702d96f08490e1ccb48ab8ce1 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 10 Mar 2011 22:14:10 +0000 Subject: The UserSettings controllers must be initialized & terminated in the correct order. Previously this was tacitly implemented but not enforced, so it was possible to accidentally do things in the wrong order and cause problems. This fixes that problem. llvm-svn: 127430 --- lldb/source/Target/Process.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'lldb/source/Target/Process.cpp') diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp index f1fb3bb4d10..03fc98298a1 100644 --- a/lldb/source/Target/Process.cpp +++ b/lldb/source/Target/Process.cpp @@ -2671,7 +2671,7 @@ Process::PopProcessInputReader () // The process needs to know about installed plug-ins void -Process::DidInitialize () +Process::SettingsInitialize () { static std::vector g_plugins; @@ -2707,16 +2707,20 @@ Process::DidInitialize () UserSettingsController::InitializeSettingsController (usc, SettingsController::global_settings_table, SettingsController::instance_settings_table); + + // Now call SettingsInitialize() for each 'child' of Process settings + Thread::SettingsInitialize (); } void -Process::Initialize () -{ -} - -void -Process::Terminate () +Process::SettingsTerminate () { + // Must call SettingsTerminate() on each 'child' of Process settings before terminating Process settings. + + Thread::SettingsTerminate (); + + // Now terminate Process Settings. + UserSettingsControllerSP &usc = GetSettingsController(); UserSettingsController::FinalizeSettingsController (usc); usc.reset(); -- cgit v1.2.3