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.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@127430 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Target/Target.cpp b/source/Target/Target.cpp
index ca400fc..82110db 100644
--- a/source/Target/Target.cpp
+++ b/source/Target/Target.cpp
@@ -779,18 +779,28 @@
 }
 
 void
-Target::Initialize ()
+Target::SettingsInitialize ()
 {
     UserSettingsControllerSP &usc = GetSettingsController();
     usc.reset (new SettingsController);
     UserSettingsController::InitializeSettingsController (usc,
                                                           SettingsController::global_settings_table,
                                                           SettingsController::instance_settings_table);
+                                                          
+    // Now call SettingsInitialize() on each 'child' setting of Target
+    Process::SettingsInitialize ();
 }
 
 void
-Target::Terminate ()
+Target::SettingsTerminate ()
 {
+
+    // Must call SettingsTerminate() on each settings 'child' of Target, before terminating Target's Settings.
+    
+    Process::SettingsTerminate ();
+    
+    // Now terminate Target Settings.
+    
     UserSettingsControllerSP &usc = GetSettingsController();
     UserSettingsController::FinalizeSettingsController (usc);
     usc.reset();