From f20e8239cddff27d9dc0cc2fcadf397879f15608 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 9 Sep 2010 18:26:37 +0000 Subject: Add comments to InstanceSettings constructors explaining why they have to be set up the way they are. Comment out code that removes pending settings for live instances (after the settings are copied over). llvm-svn: 113519 --- lldb/source/Target/Thread.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'lldb/source/Target/Thread.cpp') diff --git a/lldb/source/Target/Thread.cpp b/lldb/source/Target/Thread.cpp index 422257f8ad02..7fa64912a978 100644 --- a/lldb/source/Target/Thread.cpp +++ b/lldb/source/Target/Thread.cpp @@ -970,13 +970,15 @@ ThreadInstanceSettings::ThreadInstanceSettings (UserSettingsController &owner, b InstanceSettings (owner, (name == NULL ? CreateInstanceName().AsCString() : name), live_instance), m_avoid_regexp_ap () { - // FIXME: This seems like generic code, why was it duplicated (with the slight difference that - // DebuggerInstanceSettings checks name, not m_instance_name below) in Process & Debugger? - if (m_instance_name != InstanceSettings::GetDefaultName() && live_instance) + // CopyInstanceSettings is a pure virtual function in InstanceSettings; it therefore cannot be called + // until the vtables for ThreadInstanceSettings are properly set up, i.e. AFTER all the initializers. + // For this reason it has to be called here, rather than in the initializer or in the parent constructor. + + if (live_instance) { const lldb::InstanceSettingsSP &pending_settings = m_owner.FindPendingSettings (m_instance_name); CopyInstanceSettings (pending_settings,false); - m_owner.RemovePendingSettings (m_instance_name); + //m_owner.RemovePendingSettings (m_instance_name); } } -- cgit v1.2.3