From eacfc085926c53dba5ebcea869df721711fdb5bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Fri, 18 Feb 2022 17:38:22 +0200 Subject: [PATCH] fix PackedUser test It is 120 bits long. @sizeOf returns 128, because, I guess, it tries to word-align it (not byte-align it). We are OK with non-word-aligned user struct, since it will have an arbitrary []u8 slice right after it with the string data. However, byte-alignment is important. --- src/user.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/user.zig b/src/user.zig index cc95ea5..e611a1e 100644 --- a/src/user.zig +++ b/src/user.zig @@ -1,7 +1,7 @@ const std = @import("std"); -const PackedUserSize = @sizeOf(PackedUser); -const PackedUser = packed struct { +pub const PackedUserSize = @sizeOf(PackedUser); +pub const PackedUser = packed struct { uid: u32, gid: u32, additional_gids_offset: u29, @@ -16,5 +16,5 @@ const PackedUser = packed struct { const testing = std.testing; test "PackedUser is byte-aligned" { - //try testing.expectEqual(PackedUserSize * 8, @bitSizeOf(PackedUser)); + try testing.expectEqual(0, @rem(@bitSizeOf(PackedUser), 8)); }