diff options
Diffstat (limited to 'lldb')
| -rw-r--r-- | lldb/source/API/SBValue.cpp | 3 | ||||
| -rw-r--r-- | lldb/test/python_api/sbdata/TestSBData.py | 5 |
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(): |

