authorgravatar for jhc@dismail.deJimmi Holst Christensen <jhc@dismail.de> 2018-11-15 21:59:17+01:00
committergravatar for jhc@dismail.deJimmi Holst Christensen <jhc@dismail.de> 2018-11-15 21:59:17+01:00
log3090f83800f936118dfd4145a5e5754b8e899f23
tree7987d51ccc44e43a1fb54072b63461ff177d518b
parentf4606842d26d2de72a1fcfad26a22b32c9cf7a53

Fixed failure using readStruct and gave async readStruct the same sig


2 files changed, 5 insertions(+), 4 deletions(-)

std/event/io.zig+4-2
...@@ -53,10 +53,12 @@ pub fn InStream(comptime ReadError: type) type {...@@ -53,10 +53,12 @@ pub fn InStream(comptime ReadError: type) type {
53 return mem.readInt(bytes, T, endian);53 return mem.readInt(bytes, T, endian);
54 }54 }
5555
56 pub async fn readStruct(self: *Self, comptime T: type, ptr: *T) !void {56 pub async fn readStruct(self: *Self, comptime T: type) !T {
57 // Only extern and packed structs have defined in-memory layout.57 // Only extern and packed structs have defined in-memory layout.
58 comptime assert(@typeInfo(T).Struct.layout != builtin.TypeInfo.ContainerLayout.Auto);58 comptime assert(@typeInfo(T).Struct.layout != builtin.TypeInfo.ContainerLayout.Auto);
59 return await (async self.readNoEof(@sliceToBytes((*[1]T)(ptr)[0..])) catch unreachable);59 var res: [1]T = undefined;
60 try await (async self.readNoEof(@sliceToBytes(res[0..])) catch unreachable);
61 return res[0];
60 }62 }
61 };63 };
62}64}
std/pdb.zig+1-2
...@@ -485,8 +485,7 @@ const Msf = struct {...@@ -485,8 +485,7 @@ const Msf = struct {
485 var file_stream = file.inStream();485 var file_stream = file.inStream();
486 const in = &file_stream.stream;486 const in = &file_stream.stream;
487487
488 var superblock: SuperBlock = undefined;488 const superblock = try in.readStruct(SuperBlock);
489 try in.readStruct(SuperBlock, &superblock);
490489
491 if (!mem.eql(u8, superblock.FileMagic, SuperBlock.file_magic))490 if (!mem.eql(u8, superblock.FileMagic, SuperBlock.file_magic))
492 return error.InvalidDebugInfo;491 return error.InvalidDebugInfo;