diff options
author | Sean Callanan <scallanan@apple.com> | 2014-01-14 01:14:40 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2014-01-14 01:14:40 +0000 |
commit | 22ac610c4fc531e097eef84ef22fcd911896ae3c (patch) | |
tree | bda5f10af41ca1db8176c124e39cf0706b5e4a70 | |
parent | 26b944274e497b131aeab2512c445ae258826d88 (diff) | |
download | llvm-22ac610c4fc531e097eef84ef22fcd911896ae3c.zip llvm-22ac610c4fc531e097eef84ef22fcd911896ae3c.tar.gz llvm-22ac610c4fc531e097eef84ef22fcd911896ae3c.tar.bz2 |
Harden the Materializer logic against types that
don't know their bit alignment.
llvm-svn: 199173
-rw-r--r-- | lldb/source/Expression/Materializer.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lldb/source/Expression/Materializer.cpp b/lldb/source/Expression/Materializer.cpp index 87caad6..90687c0 100644 --- a/lldb/source/Expression/Materializer.cpp +++ b/lldb/source/Expression/Materializer.cpp @@ -505,6 +505,9 @@ public: size_t bit_align = m_variable_sp->GetType()->GetClangLayoutType().GetTypeBitAlign(); size_t byte_align = (bit_align + 7) / 8; + if (!byte_align) + byte_align = 1; + Error alloc_error; m_temporary_allocation = map.Malloc(data.GetByteSize(), byte_align, lldb::ePermissionsReadable | lldb::ePermissionsWritable, IRMemoryMap::eAllocationPolicyMirror, alloc_error); @@ -741,6 +744,9 @@ public: size_t bit_align = m_type.GetTypeBitAlign(); size_t byte_align = (bit_align + 7) / 8; + if (!byte_align) + byte_align = 1; + Error alloc_error; m_temporary_allocation = map.Malloc(byte_size, byte_align, lldb::ePermissionsReadable | lldb::ePermissionsWritable, IRMemoryMap::eAllocationPolicyMirror, alloc_error); |