Fixing a potential crasher where the new C++ synthetic children can return a NULL...
authorEnrico Granata <egranata@apple.com>
Fri, 14 Sep 2012 22:41:44 +0000 (22:41 +0000)
committerEnrico Granata <egranata@apple.com>
Fri, 14 Sep 2012 22:41:44 +0000 (22:41 +0000)
llvm-svn: 163946

lldb/source/Core/ValueObjectSyntheticFilter.cpp

index b5c29bc5e500b46647a00d51170c19993eeca4d0..dc85fddbf0d3f844a2867f582f3893703a965fde 100644 (file)
 
 using namespace lldb_private;
 
+class DummySyntheticFrontEnd : public SyntheticChildrenFrontEnd
+{
+public:
+    DummySyntheticFrontEnd(ValueObject &backend) :
+    SyntheticChildrenFrontEnd(backend)
+    {}
+
+    uint32_t
+    CalculateNumChildren()
+    {
+        return 0;
+    }
+    
+    lldb::ValueObjectSP
+    GetChildAtIndex (uint32_t idx)
+    {
+        return lldb::ValueObjectSP();
+    }
+    
+    uint32_t
+    GetIndexOfChildWithName (const ConstString &name)
+    {
+        return UINT32_MAX;
+    }
+    
+    bool
+    Update()
+    {
+        return false;
+    }
+
+};
+
 ValueObjectSynthetic::ValueObjectSynthetic (ValueObject &parent, lldb::SyntheticChildrenSP filter) :
     ValueObject(parent),
     m_synth_sp(filter),
@@ -34,6 +67,8 @@ ValueObjectSynthetic::ValueObjectSynthetic (ValueObject &parent, lldb::Synthetic
 #else
     SetName(parent.GetName());
 #endif
+    if (!m_synth_filter_ap.get())
+        m_synth_filter_ap.reset(new DummySyntheticFrontEnd(parent));
 }
 
 ValueObjectSynthetic::~ValueObjectSynthetic()