diff options
| author | Tamas Berghammer <tberghammer@google.com> | 2017-03-31 20:07:20 +0000 |
|---|---|---|
| committer | Tamas Berghammer <tberghammer@google.com> | 2017-03-31 20:07:20 +0000 |
| commit | af8953a0251608a7adbf02480f3fb03830e6f7e9 (patch) | |
| tree | 55cb9ca9e2a771333418394c7143d5ec4985180e /lldb/source/Plugins/Language/CPlusPlus | |
| parent | 885fa12e8a0bf02c3d4c9dc5cbe5fffdb8cc5c8b (diff) | |
| download | bcm5719-llvm-af8953a0251608a7adbf02480f3fb03830e6f7e9.tar.gz bcm5719-llvm-af8953a0251608a7adbf02480f3fb03830e6f7e9.zip | |
Do not dereference std::unique_ptr by default
Summary:
Displaying the object pointed by the unique_ptr can cause an infinite
recursion when we have a pointer loop so this change stops that
behavior. Additionally it makes the unique_ptr act more like a class
containing a pointer (what is the underlying truth) instead of some
"magic" class.
Reviewers: labath, jingham
Differential Revision: https://reviews.llvm.org/D31366
llvm-svn: 299249
Diffstat (limited to 'lldb/source/Plugins/Language/CPlusPlus')
| -rw-r--r-- | lldb/source/Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp index 9582e63f4f0..7af0a16ee19 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibStdcppUniquePointer.cpp @@ -94,29 +94,27 @@ bool LibStdcppUniquePtrSyntheticFrontEnd::MightHaveChildren() { return true; } lldb::ValueObjectSP LibStdcppUniquePtrSyntheticFrontEnd::GetChildAtIndex(size_t idx) { if (idx == 0) - return m_obj_obj; + return m_ptr_obj; if (idx == 1) return m_del_obj; if (idx == 2) - return m_ptr_obj; + return m_obj_obj; return lldb::ValueObjectSP(); } size_t LibStdcppUniquePtrSyntheticFrontEnd::CalculateNumChildren() { if (m_del_obj) return 2; - if (m_ptr_obj && m_ptr_obj->GetValueAsUnsigned(0) != 0) - return 1; - return 0; + return 1; } size_t LibStdcppUniquePtrSyntheticFrontEnd::GetIndexOfChildWithName( const ConstString &name) { - if (name == ConstString("obj") || name == ConstString("object")) + if (name == ConstString("ptr") || name == ConstString("pointer")) return 0; if (name == ConstString("del") || name == ConstString("deleter")) return 1; - if (name == ConstString("ptr") || name == ConstString("pointer")) + if (name == ConstString("obj") || name == ConstString("object")) return 2; return UINT32_MAX; } |

