diff options
Diffstat (limited to 'src/codegen/struct_layout.rs')
-rw-r--r-- | src/codegen/struct_layout.rs | 7 |
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. // |