authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-03-24 19:55:12-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-03-24 19:55:12-07:00
logb802a67562cc912213ebfc6ef8a380c775c999fe
treee08cd738c97b67c440904dfb141076c6ad334159
parentbb0e28a54ff60581c30156707eeeba1a6bd2b28f

std.MultiArrayList: check size of element, not pointer

Ever since a semi-recent language specification update, pointers to zero-sized types still have runtime bits.

1 files changed, 4 insertions(+), 1 deletions(-)

lib/std/multi_array_list.zig+4-1
...@@ -42,7 +42,10 @@ pub fn MultiArrayList(comptime S: type) type {...@@ -42,7 +42,10 @@ pub fn MultiArrayList(comptime S: type) type {
42 return &[_]F{};42 return &[_]F{};
43 }43 }
44 const byte_ptr = self.ptrs[@enumToInt(field)];44 const byte_ptr = self.ptrs[@enumToInt(field)];
45 const casted_ptr: [*]F = if (@sizeOf([*]F) == 0) undefined else @ptrCast([*]F, @alignCast(@alignOf(F), byte_ptr));45 const casted_ptr: [*]F = if (@sizeOf(F) == 0)
46 undefined
47 else
48 @ptrCast([*]F, @alignCast(@alignOf(F), byte_ptr));
46 return casted_ptr[0..self.len];49 return casted_ptr[0..self.len];
47 }50 }
4851