summaryrefslogtreecommitdiff
path: root/src/codegen/struct_layout.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen/struct_layout.rs')
-rw-r--r--src/codegen/struct_layout.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/codegen/struct_layout.rs b/src/codegen/struct_layout.rs
index c3c781cb..ca46947d 100644
--- a/src/codegen/struct_layout.rs
+++ b/src/codegen/struct_layout.rs
@@ -335,9 +335,12 @@ impl<'a> StructLayoutTracker<'a> {
new_field_layout
);
+ // Avoid divide-by-zero errors if align is 0.
+ let align = cmp::max(1, layout.align);
+
if self.last_field_was_bitfield &&
- new_field_layout.align <= layout.size % layout.align &&
- new_field_layout.size <= layout.size % layout.align
+ new_field_layout.align <= layout.size % align &&
+ new_field_layout.size <= layout.size % align
{
// The new field will be coalesced into some of the remaining bits.
//