| ... | ... | @@ -580,6 +580,7 @@ pub fn deinit(ev: *Evented) void { |
| 580 | 580 | ev.stderr_mutex.deinit(); |
| 581 | 581 | for (&ev.futexes) |*futex| futex.deinit(); |
| 582 | 582 | ev.exit_semaphore.as_object().release(); |
| 583 | ev.backing_allocator_mutex.deinit(); |
| 583 | 584 | ev.backing_allocator.free(ev.main_loop_stack[0..main_loop_stack_size]); |
| 584 | 585 | ev.queue.as_object().release(); |
| 585 | 586 | } |
| ... | ... | @@ -825,7 +826,7 @@ const Mutex = struct { |
| 825 | 826 | sleeper: Sleeper = undefined, |
| 826 | 827 | cancelable: Cancelable, |
| 827 | 828 | mutex: *Mutex, |
| 828 | | node: std.DoublyLinkedList.Node = undefined, |
| 829 | node: std.DoublyLinkedList.Node = .{}, |
| 829 | 830 | |
| 830 | 831 | fn add(context: ?*anyopaque) callconv(.c) void { |
| 831 | 832 | const waiter: *Waiter = @ptrCast(@alignCast(context)); |
| ... | ... | @@ -4714,7 +4715,7 @@ fn sleep(userdata: ?*anyopaque, timeout: Io.Timeout) Io.Cancelable!void { |
| 4714 | 4715 | return ev.yield(.{ .after = ev.timeFromTimeout(timeout) }); |
| 4715 | 4716 | }; |
| 4716 | 4717 | var waiter: SleepWaiter = .{ |
| 4717 | | .cancelable = .{ .queue = queue, .cancel = &Futex.Waiter.canceled }, |
| 4718 | .cancelable = .{ .queue = queue, .cancel = &SleepWaiter.canceled }, |
| 4718 | 4719 | .timer = timer, |
| 4719 | 4720 | }; |
| 4720 | 4721 | timer.as_object().set_context(&waiter); |