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
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index f1fb3bb..03fc982 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -2671,7 +2671,7 @@
// 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 @@
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 ()
+Process::SettingsTerminate ()
{
-}
-
-void
-Process::Terminate ()
-{
+ // 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();