diff --git a/dissect/cstruct/cstruct.py b/dissect/cstruct/cstruct.py index 2ad5549..af95607 100644 --- a/dissect/cstruct/cstruct.py +++ b/dissect/cstruct/cstruct.py @@ -324,14 +324,15 @@ def _make_array(self, type_: MetaType, num_entries: Optional[UnionHint[int, Expr return self._make_type(name, bases, size, alignment=type_.alignment, attrs=attrs) def _make_int_type(self, name: str, size: int, signed: bool, *, alignment: int = None) -> type[Int]: - return self._make_type(name, (Int,), size, attrs={"signed": signed, "alignment": alignment}) + return self._make_type(name, (Int,), size, alignment=alignment, attrs={"signed": signed}) - def _make_packed_type(self, name: str, packchar: str, base: MetaType, *, alignment: int = None) -> type[Packed]: + def _make_packed_type(self, name: str, packchar: str, base: type, *, alignment: int = None) -> type[Packed]: return self._make_type( name, (base, Packed), struct.calcsize(packchar), - attrs={"packchar": packchar, "alignment": alignment}, + alignment=alignment, + attrs={"packchar": packchar}, ) def _make_enum(self, name: str, type_: MetaType, values: dict[str, int]) -> type[Enum]: diff --git a/tests/test_basic.py b/tests/test_basic.py index 138d872..e4ce911 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -495,3 +495,13 @@ def test_array_class_name(cs: cstruct): assert cs.test.fields[0].type.__name__ == "uint8[2]" assert cs.test2.fields[1].type.__name__ == "uint8[a + 1]" + + +def test_size_and_aligment(cs: cstruct): + test = cs._make_int_type("test", 1, False, alignment=8) + assert test.size == 1 + assert test.alignment == 8 + + test = cs._make_packed_type("test", "B", int, alignment=8) + assert test.size == 1 + assert test.alignment == 8