diff --git a/lib/struct.js b/lib/struct.js index c72d24d..1108941 100644 --- a/lib/struct.js +++ b/lib/struct.js @@ -272,12 +272,13 @@ function recalc (struct) { function addType (type) { var offset = struct.size - var left = offset % struct.alignment + var align = type.indirection === 1 ? type.alignment : ref.alignof.pointer + var padding = (align - (offset % align)) % align var size = type.indirection === 1 ? type.size : ref.sizeof.pointer - if (size > left) { - offset += left - } + offset += padding + + assert.equal(offset % align, 0, "offset should align") // adjust the "size" of the struct type struct.size = offset + size