summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/UserSettingsController.cpp
diff options
context:
space:
mode:
authorCaroline Tice <ctice@apple.com>2010-09-08 17:48:55 +0000
committerCaroline Tice <ctice@apple.com>2010-09-08 17:48:55 +0000
commit91123da2d1ee7d4f09e3f62e59d33ddf8aa0b27e (patch)
tree3619476dca69d0acd798c70a1c4ca3d249d9eb16 /lldb/source/Core/UserSettingsController.cpp
parentf7fee1c1859340bd0c8188a507127aa959bcef68 (diff)
downloadbcm5719-llvm-91123da2d1ee7d4f09e3f62e59d33ddf8aa0b27e.tar.gz
bcm5719-llvm-91123da2d1ee7d4f09e3f62e59d33ddf8aa0b27e.zip
Make sure creating a pending instance doesn't also trigger creating a live instance; also make sure creating a
pending instance uses the specified instance name rather than creating a new one; add brackets to instance names when searching for and removing pending instances. llvm-svn: 113370
Diffstat (limited to 'lldb/source/Core/UserSettingsController.cpp')
-rw-r--r--lldb/source/Core/UserSettingsController.cpp37
1 files changed, 27 insertions, 10 deletions
diff --git a/lldb/source/Core/UserSettingsController.cpp b/lldb/source/Core/UserSettingsController.cpp
index ea61e863508..aee898974f9 100644
--- a/lldb/source/Core/UserSettingsController.cpp
+++ b/lldb/source/Core/UserSettingsController.cpp
@@ -47,10 +47,10 @@ UserSettingsController::InitializeSettingsController (lldb::UserSettingsControll
if (parent)
parent->RegisterChild (controller_sp);
- controller_sp->CreateSettingsVector (global_settings, true);
- controller_sp->CreateSettingsVector (instance_settings, false);
+ controller_sp->CreateSettingsVector (global_settings, true);
+ controller_sp->CreateSettingsVector (instance_settings, false);
- controller_sp->InitializeGlobalVariables ();
+ controller_sp->InitializeGlobalVariables ();
controller_sp->CreateDefaultInstanceSettings ();
return true;
@@ -565,8 +565,17 @@ UserSettingsController::GetVariable (const char *full_dot_name, lldb::SettableVa
void
UserSettingsController::RemovePendingSettings (const ConstString &instance_name)
{
+ StreamString tmp_name;
+
+ // Add surrounding brackets to instance name if not already present.
+
+ if (instance_name.AsCString()[0] != '[')
+ tmp_name.Printf ("[%s]", instance_name.AsCString());
+ else
+ tmp_name.Printf ("%s", instance_name.AsCString());
+
+ std::string instance_name_str (tmp_name.GetData());
std::map<std::string, lldb::InstanceSettingsSP>::iterator pos;
- std::string instance_name_str (instance_name.AsCString());
Mutex::Locker locker (m_pending_settings_mutex);
m_pending_settings.erase (instance_name_str);
@@ -576,7 +585,16 @@ const lldb::InstanceSettingsSP &
UserSettingsController::FindPendingSettings (const ConstString &instance_name)
{
std::map<std::string, lldb::InstanceSettingsSP>::iterator pos;
- std::string instance_name_str (instance_name.AsCString());
+ StreamString tmp_name;
+
+ // Add surrounding brackets to instance name if not already present.
+
+ if (instance_name.AsCString()[0] != '[')
+ tmp_name.Printf ("[%s]", instance_name.AsCString());
+ else
+ tmp_name.Printf ("%s", instance_name.AsCString());
+
+ std::string instance_name_str (tmp_name.GetData()); // Need std::string for std::map look-up
{ // Scope for mutex.
Mutex::Locker locker (m_pending_settings_mutex);
@@ -655,9 +673,7 @@ UserSettingsController::PendingSettingsForInstance (const ConstString &instance_
}
else
{
- lldb::InstanceSettingsSP default_settings_sp =
- m_pending_settings[InstanceSettings::GetDefaultName().AsCString()];
- lldb::InstanceSettingsSP new_settings_sp = CreateNewInstanceSettings ();
+ lldb::InstanceSettingsSP new_settings_sp = CreateNewInstanceSettings (instance_name.AsCString());
CopyDefaultSettings (new_settings_sp, instance_name, true);
m_pending_settings[name_str] = new_settings_sp;
return new_settings_sp;
@@ -1861,11 +1877,12 @@ UserSettingsController::UpdateEnumVariable (lldb::OptionEnumValueElement *enum_v
// class InstanceSettings
//----------------------------------------------------------------------
-InstanceSettings::InstanceSettings (UserSettingsController &owner, const char *instance_name) :
+InstanceSettings::InstanceSettings (UserSettingsController &owner, const char *instance_name, bool live_instance) :
m_owner (owner),
m_instance_name (instance_name)
{
- if (m_instance_name != InstanceSettings::GetDefaultName())
+ if ((m_instance_name != InstanceSettings::GetDefaultName())
+ && live_instance)
m_owner.RegisterInstanceSettings (this);
}
OpenPOWER on IntegriCloud