aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Callanan <scallanan@apple.com>2014-01-14 01:14:40 +0000
committerSean Callanan <scallanan@apple.com>2014-01-14 01:14:40 +0000
commit22ac610c4fc531e097eef84ef22fcd911896ae3c (patch)
treebda5f10af41ca1db8176c124e39cf0706b5e4a70
parent26b944274e497b131aeab2512c445ae258826d88 (diff)
downloadllvm-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.cpp6
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);