Commit 78ab1f609a

Andrew Kelley <andrew@ziglang.org>
2020-12-22 02:23:47
apply kprotty's WaitGroup fix
1 parent 1945984
Changed files (1)
src/WaitGroup.zig
@@ -32,19 +32,21 @@ pub fn stop(self: *WaitGroup) void {
 }
 
 pub fn wait(self: *WaitGroup) void {
-    const held = self.lock.acquire();
+    while (true) {
+        const held = self.lock.acquire();
 
-    if (self.counter == 0) {
-        held.release();
-        return;
-    }
+        if (self.counter == 0) {
+            held.release();
+            return;
+        }
 
-    var event = std.ResetEvent.init();
-    defer event.deinit();
+        var event = std.ResetEvent.init();
+        defer event.deinit();
 
-    std.debug.assert(self.event == null);
-    self.event = &event;
+        std.debug.assert(self.event == null);
+        self.event = &event;
 
-    held.release();
-    event.wait();
+        held.release();
+        event.wait();
+    }
 }