<rdar://problem/16424592>

For some reason, the libc++ vector<bool> data formatter was essentially a costly no-up, doing everything required of it, except actually generating the child values!

This restores its functionality

llvm-svn: 205259
diff --git a/lldb/include/lldb/Core/ValueObject.h b/lldb/include/lldb/Core/ValueObject.h
index 7d50e6d..589b22f 100644
--- a/lldb/include/lldb/Core/ValueObject.h
+++ b/lldb/include/lldb/Core/ValueObject.h
@@ -762,7 +762,7 @@
     
     static lldb::ValueObjectSP
     CreateValueObjectFromData (const char* name,
-                               DataExtractor& data,
+                               const DataExtractor& data,
                                const ExecutionContext& exe_ctx,
                                ClangASTType type);
     
diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp
index b10f327..1145eaa 100644
--- a/lldb/source/Core/ValueObject.cpp
+++ b/lldb/source/Core/ValueObject.cpp
@@ -3882,7 +3882,7 @@
 
 lldb::ValueObjectSP
 ValueObject::CreateValueObjectFromData (const char* name,
-                                        DataExtractor& data,
+                                        const DataExtractor& data,
                                         const ExecutionContext& exe_ctx,
                                         ClangASTType type)
 {
diff --git a/lldb/source/DataFormatters/LibCxx.cpp b/lldb/source/DataFormatters/LibCxx.cpp
index 585c2e6..1742026 100644
--- a/lldb/source/DataFormatters/LibCxx.cpp
+++ b/lldb/source/DataFormatters/LibCxx.cpp
@@ -139,11 +139,11 @@
             return ValueObjectSP();
     }
     bool bit_set = ((byte & mask) != 0);
-    ValueObjectSP retval_sp;
     DataBufferSP buffer_sp(new DataBufferHeap(m_bool_type.GetByteSize(),0));
     if (bit_set && buffer_sp && buffer_sp->GetBytes())
         *(buffer_sp->GetBytes()) = 1; // regardless of endianness, anything non-zero is true
     StreamString name; name.Printf("[%" PRIu64 "]", (uint64_t)idx);
+    ValueObjectSP retval_sp(ValueObject::CreateValueObjectFromData(name.GetData(), DataExtractor(buffer_sp, process_sp->GetByteOrder(), process_sp->GetAddressByteSize()), m_exe_ctx_ref, m_bool_type));
     if (retval_sp)
         m_children[idx] = retval_sp;
     return retval_sp;
@@ -166,8 +166,6 @@
     ValueObjectSP valobj_sp = m_backend.GetSP();
     if (!valobj_sp)
         return false;
-    if (!valobj_sp)
-        return false;
     m_exe_ctx_ref = valobj_sp->GetExecutionContextRef();
     ValueObjectSP size_sp(valobj_sp->GetChildMemberWithName(ConstString("__size_"), true));
     if (!size_sp)