diff --git a/lib/std/Io.zig b/lib/std/Io.zig index 906ba85f72d1014b9b17341c25e16cc775943b3a..d438208c4685453e766c0eff150cb09e747e17e7 100644 --- a/lib/std/Io.zig +++ b/lib/std/Io.zig @@ -467,6 +467,7 @@ pub const OperateTimeoutError = Cancelable || Timeout.Error || ConcurrentError; /// Performs one `Operation` with provided `timeout`. pub fn operateTimeout(io: Io, operation: Operation, timeout: Timeout) OperateTimeoutError!Operation.Result { + if (timeout == .none) return io.vtable.operate(io.userdata, operation); var storage: [1]Operation.Storage = undefined; var batch: Batch = .init(&storage); batch.addAt(0, operation); @@ -1147,6 +1148,7 @@ pub const Duration = struct { /// Declares under what conditions an operation should return `error.Timeout`. pub const Timeout = union(enum) { + /// `.none` will wait forever none, duration: Clock.Duration, deadline: Clock.Timestamp, diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig index 9b6670b60336a7adc8a1dd529051cb4517a6162d..bcbc1ec9cc5351ee540546ccdb72d7151a0ed2f9 100644 --- a/lib/std/Io/Threaded.zig +++ b/lib/std/Io/Threaded.zig @@ -11771,7 +11771,6 @@ fn nowWasi(clock: Io.Clock) Io.Timestamp { fn sleep(userdata: ?*anyopaque, timeout: Io.Timeout) Io.Cancelable!void { const t: *Threaded = @ptrCast(@alignCast(userdata)); - if (timeout == .none) return; if (use_parking_sleep) return parking_sleep.sleep(timeout); if (native_os == .wasi) return sleepWasi(t, timeout); if (@TypeOf(posix.system.clock_nanosleep) != void) return sleepPosix(timeout);