commit 3090f83800f936118dfd4145a5e5754b8e899f23 (tree)
parent f4606842d26d2de72a1fcfad26a22b32c9cf7a53
Author: Jimmi HC <jimmiholstchristensen@gmail.com>
Date: Thu, 15 Nov 2018 21:59:17 +0100
Fixed failure using readStruct and gave async readStruct the same sig
Diffstat:
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/std/event/io.zig b/std/event/io.zig
@@ -53,10 +53,12 @@ pub fn InStream(comptime ReadError: type) type {
return mem.readInt(bytes, T, endian);
}
- pub async fn readStruct(self: *Self, comptime T: type, ptr: *T) !void {
+ pub async fn readStruct(self: *Self, comptime T: type) !T {
// Only extern and packed structs have defined in-memory layout.
comptime assert(@typeInfo(T).Struct.layout != builtin.TypeInfo.ContainerLayout.Auto);
- return await (async self.readNoEof(@sliceToBytes((*[1]T)(ptr)[0..])) catch unreachable);
+ var res: [1]T = undefined;
+ try await (async self.readNoEof(@sliceToBytes(res[0..])) catch unreachable);
+ return res[0];
}
};
}
diff --git a/std/pdb.zig b/std/pdb.zig
@@ -485,8 +485,7 @@ const Msf = struct {
var file_stream = file.inStream();
const in = &file_stream.stream;
- var superblock: SuperBlock = undefined;
- try in.readStruct(SuperBlock, &superblock);
+ const superblock = try in.readStruct(SuperBlock);
if (!mem.eql(u8, superblock.FileMagic, SuperBlock.file_magic))
return error.InvalidDebugInfo;