summaryrefslogtreecommitdiffstats
path: root/lldb
diff options
context:
space:
mode:
Diffstat (limited to 'lldb')
-rw-r--r--lldb/source/API/SBValue.cpp3
-rw-r--r--lldb/test/python_api/sbdata/TestSBData.py5
2 files changed, 6 insertions, 2 deletions
diff --git a/lldb/source/API/SBValue.cpp b/lldb/source/API/SBValue.cpp
index c7ab54999ca..c9f78e2cf1f 100644
--- a/lldb/source/API/SBValue.cpp
+++ b/lldb/source/API/SBValue.cpp
@@ -404,9 +404,8 @@ lldb::SBValue
SBValue::CreateValueFromAddress(const char* name, lldb::addr_t address, SBType type)
{
lldb::SBValue result;
- if (m_opaque_sp)
+ if (m_opaque_sp && type.IsValid() && type.GetPointerType().IsValid())
{
-
SBType real_type(type.GetPointerType());
lldb::DataBufferSP buffer(new lldb_private::DataBufferHeap(&address,sizeof(lldb::addr_t)));
diff --git a/lldb/test/python_api/sbdata/TestSBData.py b/lldb/test/python_api/sbdata/TestSBData.py
index e393fda7a23..c1c2e6f9f8a 100644
--- a/lldb/test/python_api/sbdata/TestSBData.py
+++ b/lldb/test/python_api/sbdata/TestSBData.py
@@ -112,6 +112,11 @@ class SBDataAPICase(TestBase):
foobar_addr = star_foobar.GetLoadAddress()
foobar_addr += 12
+ # http://llvm.org/bugs/show_bug.cgi?id=11579
+ # lldb::SBValue::CreateValueFromAddress does not verify SBType::GetPointerType succeeds
+ # This should not crash LLDB.
+ nothing = foobar.CreateValueFromAddress("nothing", foobar_addr, star_foobar.GetType().GetBasicType(lldb.eBasicTypeInvalid))
+
new_foobar = foobar.CreateValueFromAddress("f00", foobar_addr, star_foobar.GetType())
if self.TraceOn():
OpenPOWER on IntegriCloud