summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2016-05-25 20:38:33 +0000
committerEnrico Granata <egranata@apple.com>2016-05-25 20:38:33 +0000
commitf02be230f6a0d7db81c78702a4651ab29a450a41 (patch)
tree19b543c97aac7200314865b19018e2d867eb7af6 /lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp
parentd5d37dcf8329b7c5774aadc60c4474c8e4a4e55f (diff)
downloadbcm5719-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.cpp11
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
OpenPOWER on IntegriCloud