authorgravatar for quae@daurnimator.comdaurnimator <quae@daurnimator.com> 2019-11-19 16:31:24+11:00
committergravatar for quae@daurnimator.comdaurnimator <quae@daurnimator.com> 2019-11-27 13:00:59+11:00
log21ca54f56013897573ba5aeb67d946deaa162200
tree2e2304deaf526d431cbb179059613b11277877f9
parent8ecd6c4d8c021f7778b4959bdf75204dfd2d1946
signature Commit is signed but in an unrecognized format.

std: add alertable argument for windows.WaitForSingleObject


4 files changed, 6 insertions(+), 4 deletions(-)

lib/std/child_process.zig+1-1
...@@ -235,7 +235,7 @@ pub const ChildProcess = struct {...@@ -235,7 +235,7 @@ pub const ChildProcess = struct {
235 }235 }
236236
237 fn waitUnwrappedWindows(self: *ChildProcess) !void {237 fn waitUnwrappedWindows(self: *ChildProcess) !void {
238 const result = windows.WaitForSingleObject(self.handle, windows.INFINITE);238 const result = windows.WaitForSingleObjectEx(self.handle, windows.INFINITE, false);
239239
240 self.term = @as(SpawnError!Term, x: {240 self.term = @as(SpawnError!Term, x: {
241 var exit_code: windows.DWORD = undefined;241 var exit_code: windows.DWORD = undefined;
lib/std/os/windows.zig+2-2
...@@ -171,8 +171,8 @@ pub const WaitForSingleObjectError = error{...@@ -171,8 +171,8 @@ pub const WaitForSingleObjectError = error{
171 Unexpected,171 Unexpected,
172};172};
173173
174pub fn WaitForSingleObject(handle: HANDLE, milliseconds: DWORD) WaitForSingleObjectError!void {174pub fn WaitForSingleObjectEx(handle: HANDLE, milliseconds: DWORD, alertable: bool) WaitForSingleObjectError!void {
175 switch (kernel32.WaitForSingleObject(handle, milliseconds)) {175 switch (kernel32.WaitForSingleObjectEx(handle, milliseconds, @boolToInt(alertable))) {
176 WAIT_ABANDONED => return error.WaitAbandoned,176 WAIT_ABANDONED => return error.WaitAbandoned,
177 WAIT_OBJECT_0 => return,177 WAIT_OBJECT_0 => return,
178 WAIT_TIMEOUT => return error.WaitTimeOut,178 WAIT_TIMEOUT => return error.WaitTimeOut,
lib/std/os/windows/kernel32.zig+2
...@@ -205,6 +205,8 @@ pub extern "kernel32" stdcallcc fn TlsFree(dwTlsIndex: DWORD) BOOL;...@@ -205,6 +205,8 @@ pub extern "kernel32" stdcallcc fn TlsFree(dwTlsIndex: DWORD) BOOL;
205205
206pub extern "kernel32" stdcallcc fn WaitForSingleObject(hHandle: HANDLE, dwMilliseconds: DWORD) DWORD;206pub extern "kernel32" stdcallcc fn WaitForSingleObject(hHandle: HANDLE, dwMilliseconds: DWORD) DWORD;
207207
208pub extern "kernel32" stdcallcc fn WaitForSingleObjectEx(hHandle: HANDLE, dwMilliseconds: DWORD, bAlertable: BOOL) DWORD;
209
208pub extern "kernel32" stdcallcc fn WriteFile(210pub extern "kernel32" stdcallcc fn WriteFile(
209 in_hFile: HANDLE,211 in_hFile: HANDLE,
210 in_lpBuffer: [*]const u8,212 in_lpBuffer: [*]const u8,
lib/std/thread.zig+1-1
...@@ -99,7 +99,7 @@ pub const Thread = struct {...@@ -99,7 +99,7 @@ pub const Thread = struct {
99 os.munmap(self.data.memory);99 os.munmap(self.data.memory);
100 },100 },
101 .windows => {101 .windows => {
102 windows.WaitForSingleObject(self.data.handle, windows.INFINITE) catch unreachable;102 windows.WaitForSingleObjectEx(self.data.handle, windows.INFINITE, false) catch unreachable;
103 windows.CloseHandle(self.data.handle);103 windows.CloseHandle(self.data.handle);
104 windows.HeapFree(self.data.heap_handle, 0, self.data.alloc_start);104 windows.HeapFree(self.data.heap_handle, 0, self.data.alloc_start);
105 },105 },