Author: shafik Date: Mon Mar 4 16:17:18 2019 New Revision: 355351 URL: http://llvm.org/viewvc/llvm-project?rev=355351&view=rev Log: [DataFormatters] Fix regression in libc++ std::atomic formatter caused by https://reviews.llvm.org/D56913
rdar://problem/48568543 Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxAtomic.cpp Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxAtomic.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxAtomic.cpp?rev=355351&r1=355350&r2=355351&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxAtomic.cpp (original) +++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxAtomic.cpp Mon Mar 4 16:17:18 2019 @@ -15,11 +15,25 @@ using namespace lldb_private::formatters bool lldb_private::formatters::LibCxxAtomicSummaryProvider( ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) { - static ConstString g___a_("__a_"); - if (ValueObjectSP child = valobj.GetChildMemberWithName(g___a_, true)) { + ValueObjectSP non_sythetic = valobj.GetNonSyntheticValue(); + if (!non_sythetic) + return false; + + ValueObjectSP index_zero = non_sythetic->GetChildAtIndex(0, true); + if (!index_zero) + return false; + + ValueObjectSP member__a_ = + index_zero->GetChildMemberWithName(ConstString("__a_"), true); + if (!member__a_) + return false; + + if (ValueObjectSP member__a_value = + member__a_->GetChildMemberWithName(ConstString("__a_value"), true)) { std::string summary; - if (child->GetSummaryAsCString(summary, options) && summary.size() > 0) { + if (member__a_value->GetSummaryAsCString(summary, options) && + summary.size() > 0) { stream.Printf("%s", summary.c_str()); return true; } @@ -59,9 +73,17 @@ lldb_private::formatters::LibcxxStdAtomi : SyntheticChildrenFrontEnd(*valobj_sp), m_real_child(nullptr) {} bool lldb_private::formatters::LibcxxStdAtomicSyntheticFrontEnd::Update() { - static ConstString g___a_("__a_"); + ValueObjectSP index_zero = m_backend.GetChildAtIndex(0, true); + if (!index_zero) + return false; + + ValueObjectSP member__a_ = + index_zero->GetChildMemberWithName(ConstString("__a_"), true); + if (!member__a_) + return false; - m_real_child = m_backend.GetChildMemberWithName(g___a_, true).get(); + m_real_child = + member__a_->GetChildMemberWithName(ConstString("__a_value"), true).get(); return false; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits