diff options
author | Caroline Tice <ctice@apple.com> | 2011-03-10 22:14:10 +0000 |
---|---|---|
committer | Caroline Tice <ctice@apple.com> | 2011-03-10 22:14:10 +0000 |
commit | 20bd37f747e84c5702d96f08490e1ccb48ab8ce1 (patch) | |
tree | 267a00857860c043aaf581fbbc0d2dd0b5e5f4c7 /lldb/source/Target/Process.cpp | |
parent | 15bc34c7c215ff05a8c51a679ea19cb28cd91d1a (diff) | |
download | bcm5719-llvm-20bd37f747e84c5702d96f08490e1ccb48ab8ce1.tar.gz bcm5719-llvm-20bd37f747e84c5702d96f08490e1ccb48ab8ce1.zip |
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
Diffstat (limited to 'lldb/source/Target/Process.cpp')
-rw-r--r-- | lldb/source/Target/Process.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
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<lldb::OptionEnumValueElement> 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(); |