authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-09-11 15:01:21-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-09-11 15:01:54-04:00
log67491a4222f2dacf047989329d4c16a5a2f163d5
tree0001a1a62f9d8b2550c78ced8275478e043c87f4
parentc9b2210fcf58d9e99851ad2a6a1219c997cf0d82
signature Commit is signed but in an unrecognized format.

disable runtime safety in std.io.InStream

Let's not be writing 0xaa in safe modes for upwards of 4 MiB for every stream read. This is equivalent to the fact that we don't memset the entire call stack to 0xaa for every function call.

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

std/io/in_stream.zig+3-3
...@@ -32,10 +32,10 @@ pub fn InStream(comptime ReadError: type) type {...@@ -32,10 +32,10 @@ pub fn InStream(comptime ReadError: type) type {
32 /// End of stream is not an error condition.32 /// End of stream is not an error condition.
33 pub fn read(self: *Self, buffer: []u8) Error!usize {33 pub fn read(self: *Self, buffer: []u8) Error!usize {
34 if (std.io.is_async) {34 if (std.io.is_async) {
35 // Let's not be writing 0xaa in safe modes for upwards of 4 MiB for every stream read.
36 @setRuntimeSafety(false);
35 var stack_frame: [stack_size]u8 align(stack_align) = undefined;37 var stack_frame: [stack_size]u8 align(stack_align) = undefined;
36 // TODO https://github.com/ziglang/zig/issues/306838 return await @asyncCall(&stack_frame, {}, self.readFn, self, buffer);
37 var result: Error!usize = undefined;
38 return await @asyncCall(&stack_frame, &result, self.readFn, self, buffer);
39 } else {39 } else {
40 return self.readFn(self, buffer);40 return self.readFn(self, buffer);
41 }41 }