authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-09-08 18:18:27-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-09-08 18:18:27-07:00
logeac2bbfec9f99c27a886f4842cb9ca42584607f3
tree3a757b77dc676619f3aace7bf1acca538b7c19fe
parent1872c85ac25146036119387d1f376e2cba3ff7be

std.Io.Writer.writeSliceEndian: add compile error

check when an auto-layout struct is attempted to be memory reinterpreted and written out. it would be writing undefined memory

1 files changed, 5 insertions(+), 0 deletions(-)

lib/std/Io/Writer.zig+5
...@@ -865,6 +865,11 @@ pub inline fn writeSliceEndian(...@@ -865,6 +865,11 @@ pub inline fn writeSliceEndian(
865 slice: []const Elem,865 slice: []const Elem,
866 endian: std.builtin.Endian,866 endian: std.builtin.Endian,
867) Error!void {867) Error!void {
868 switch (@typeInfo(Elem)) {
869 .@"struct" => |info| comptime assert(info.layout != .auto),
870 .int, .@"enum" => {},
871 else => @compileError("ill-defined memory layout"),
872 }
868 if (native_endian == endian) {873 if (native_endian == endian) {
869 return writeAll(w, @ptrCast(slice));874 return writeAll(w, @ptrCast(slice));
870 } else {875 } else {