motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

commit 700bb19a9053e236df6a9f15d435c427391e3ecf (tree)
parent 45e5841281e0adf7924f0931dff219bf38f74622
Author: Emeka Nkurumeh <emekankurumeh@outlook.com>
Date:   Wed, 16 Oct 2019 17:15:52 -0500

fix std.mem.AsBytesReturnType (#3442)

closes #3334

Diffstat:
Mlib/std/mem.zig | 10++++++++++
1 file changed, 10 insertions(+), 0 deletions(-)

diff --git a/lib/std/mem.zig b/lib/std/mem.zig @@ -1325,6 +1325,12 @@ fn AsBytesReturnType(comptime P: type) type { const size = usize(@sizeOf(meta.Child(P))); const alignment = comptime meta.alignment(P); + if (alignment == 0) { + if (comptime trait.isConstPtr(P)) + return *const [size]u8; + return *[size]u8; + } + if (comptime trait.isConstPtr(P)) return *align(alignment) const [size]u8; return *align(alignment) [size]u8; @@ -1364,6 +1370,10 @@ test "asBytes" { .d = 0xA1, }; testing.expect(eql(u8, asBytes(&inst), "\xBE\xEF\xDE\xA1")); + + const ZST = struct {}; + const zero = ZST{}; + testing.expect(eql(u8, asBytes(&zero), "")); } ///Given any value, returns a copy of its bytes in an array.