diff options
author | Enrico Granata <egranata@apple.com> | 2016-05-25 20:38:33 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2016-05-25 20:38:33 +0000 |
commit | f02be230f6a0d7db81c78702a4651ab29a450a41 (patch) | |
tree | 19b543c97aac7200314865b19018e2d867eb7af6 /lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp | |
parent | d5d37dcf8329b7c5774aadc60c4474c8e4a4e55f (diff) | |
download | bcm5719-llvm-f02be230f6a0d7db81c78702a4651ab29a450a41.tar.gz bcm5719-llvm-f02be230f6a0d7db81c78702a4651ab29a450a41.zip |
Fix an issue where LLDB would crash if one tried to 'frame variable' an unordered_map more than once in a stop due to the synthetic provider not properly caching the ValueObjects it was returning for the child elements
Fixes rdar://26470909
llvm-svn: 270752
Diffstat (limited to 'lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp')
-rw-r--r-- | lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp b/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp index 54e91f1343c..5424776950a 100644 --- a/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp +++ b/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp @@ -125,10 +125,13 @@ lldb_private::formatters::LibcxxStdUnorderedMapSyntheticFrontEnd::GetChildAtInde return lldb::ValueObjectSP(); const bool thread_and_frame_only_if_stopped = true; ExecutionContext exe_ctx = val_hash.first->GetExecutionContextRef().Lock(thread_and_frame_only_if_stopped); - return val_hash.first->CreateValueObjectFromData(stream.GetData(), - data, - exe_ctx, - val_hash.first->GetCompilerType()); + ValueObjectSP child_sp(val_hash.first->CreateValueObjectFromData(stream.GetData(), + data, + exe_ctx, + val_hash.first->GetCompilerType())); + if (child_sp) + m_children.emplace(idx, child_sp); + return child_sp; } bool |