From 31a8d051ddc88fb654ad676ffa0a90bb6decb0c8 Mon Sep 17 00:00:00 2001 From: Sean Callanan Date: Thu, 5 Jan 2012 01:11:09 +0000 Subject: Fixed a dangling pointer bug associated with the result variable on a "finish" statement. The ownership of the result value was not being properly assigned to the newly-created persistent result variable; now it is. llvm-svn: 147587 --- lldb/source/Core/ValueObjectConstResult.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'lldb/source/Core/ValueObjectConstResult.cpp') diff --git a/lldb/source/Core/ValueObjectConstResult.cpp b/lldb/source/Core/ValueObjectConstResult.cpp index 950d33405af..ee82e24980f 100644 --- a/lldb/source/Core/ValueObjectConstResult.cpp +++ b/lldb/source/Core/ValueObjectConstResult.cpp @@ -98,6 +98,13 @@ ValueObjectConstResult::ValueObjectConstResult m_impl(this, address) { m_data = data; + + if (!m_data.GetSharedDataBuffer()) + { + DataBufferSP shared_data_buffer(new DataBufferHeap(data.GetDataStart(), data.GetByteSize())); + m_data.SetData(shared_data_buffer); + } + m_value.GetScalar() = (uintptr_t)m_data.GetDataStart(); m_value.SetValueType(Value::eValueTypeHostAddress); m_value.SetContext(Value::eContextTypeClangType, clang_type); -- cgit v1.2.3