[Lldb-commits] [lldb] r355351 - [DataFormatters] Fix regression in libc++ std::atomic formatter caused by https://reviews.llvm.org/D56913

Shafik Yaghmour via lldb-commits lldb-commits at lists.llvm.org
Mon Mar 4 16:17:18 PST 2019


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;
 }




More information about the lldb-commits mailing list