zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 21ca54f56013897573ba5aeb67d946deaa162200 (tree)
parent 8ecd6c4d8c021f7778b4959bdf75204dfd2d1946
Author: daurnimator <quae@daurnimator.com>
Date:   Tue, 19 Nov 2019 16:31:24 +1100

std: add alertable argument for windows.WaitForSingleObject

Diffstat:
Mlib/std/child_process.zig | 2+-
Mlib/std/os/windows.zig | 4++--
Mlib/std/os/windows/kernel32.zig | 2++
Mlib/std/thread.zig | 2+-
4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/std/child_process.zig b/lib/std/child_process.zig @@ -235,7 +235,7 @@ pub const ChildProcess = struct { } fn waitUnwrappedWindows(self: *ChildProcess) !void { - const result = windows.WaitForSingleObject(self.handle, windows.INFINITE); + const result = windows.WaitForSingleObjectEx(self.handle, windows.INFINITE, false); self.term = @as(SpawnError!Term, x: { var exit_code: windows.DWORD = undefined; diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig @@ -171,8 +171,8 @@ pub const WaitForSingleObjectError = error{ Unexpected, }; -pub fn WaitForSingleObject(handle: HANDLE, milliseconds: DWORD) WaitForSingleObjectError!void { - switch (kernel32.WaitForSingleObject(handle, milliseconds)) { +pub fn WaitForSingleObjectEx(handle: HANDLE, milliseconds: DWORD, alertable: bool) WaitForSingleObjectError!void { + switch (kernel32.WaitForSingleObjectEx(handle, milliseconds, @boolToInt(alertable))) { WAIT_ABANDONED => return error.WaitAbandoned, WAIT_OBJECT_0 => return, WAIT_TIMEOUT => return error.WaitTimeOut, diff --git a/lib/std/os/windows/kernel32.zig b/lib/std/os/windows/kernel32.zig @@ -205,6 +205,8 @@ pub extern "kernel32" stdcallcc fn TlsFree(dwTlsIndex: DWORD) BOOL; pub extern "kernel32" stdcallcc fn WaitForSingleObject(hHandle: HANDLE, dwMilliseconds: DWORD) DWORD; +pub extern "kernel32" stdcallcc fn WaitForSingleObjectEx(hHandle: HANDLE, dwMilliseconds: DWORD, bAlertable: BOOL) DWORD; + pub extern "kernel32" stdcallcc fn WriteFile( in_hFile: HANDLE, in_lpBuffer: [*]const u8, diff --git a/lib/std/thread.zig b/lib/std/thread.zig @@ -99,7 +99,7 @@ pub const Thread = struct { os.munmap(self.data.memory); }, .windows => { - windows.WaitForSingleObject(self.data.handle, windows.INFINITE) catch unreachable; + windows.WaitForSingleObjectEx(self.data.handle, windows.INFINITE, false) catch unreachable; windows.CloseHandle(self.data.handle); windows.HeapFree(self.data.heap_handle, 0, self.data.alloc_start); },