diff --git a/lib/std/Progress.zig b/lib/std/Progress.zig index b75ad106a43521459b9263f1b4d9368dfa05244c..131aff2d2b713569e943b30f058efdf45406b49a 100644 --- a/lib/std/Progress.zig +++ b/lib/std/Progress.zig @@ -103,8 +103,10 @@ pub const Node = struct { } parent.completeOne(); } else { + const held = self.context.update_lock.acquire(); + defer held.release(); self.context.done = true; - self.context.refresh(); + self.context.refreshWithHeldLock(); } } diff --git a/lib/std/os/windows/kernel32.zig b/lib/std/os/windows/kernel32.zig index ec4a75afa9a0b2f570df2fafab7c0e8954f136f5..734059a08ace2dbee6a3d9a0ed40f7aa524838f5 100644 --- a/lib/std/os/windows/kernel32.zig +++ b/lib/std/os/windows/kernel32.zig @@ -299,6 +299,6 @@ pub extern "kernel32" fn SleepConditionVariableSRW( f: ULONG, ) callconv(WINAPI) BOOL; -pub extern "kernel32" fn TryAcquireSRWLockExclusive(s: *SRWLOCK) callconv(WINAPI) BOOL; +pub extern "kernel32" fn TryAcquireSRWLockExclusive(s: *SRWLOCK) callconv(WINAPI) BOOLEAN; pub extern "kernel32" fn AcquireSRWLockExclusive(s: *SRWLOCK) callconv(WINAPI) void; pub extern "kernel32" fn ReleaseSRWLockExclusive(s: *SRWLOCK) callconv(WINAPI) void;