From 2f30b0f44d5dbdb80362f181f35504965db733f9 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Fri, 19 Dec 2025 09:59:05 -0800 Subject: [PATCH] std.Progress.start: handle cancelation from isTty It's important not to swallow error.Canceled. We don't have recancel() yet but that will be a way to "rearm" cancelation after handling it so that it is not ignored. --- lib/std/Progress.zig | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/std/Progress.zig b/lib/std/Progress.zig index 54b52d48af11fc06cba1c7a26ca3a2a9198158b4..8bd120dbd1f23899a4707eebc2ac2225543d29cb 100644 --- a/lib/std/Progress.zig +++ b/lib/std/Progress.zig @@ -497,10 +497,17 @@ pub fn start(io: Io, options: Options) Node { global_progress.terminal = stderr; if (stderr.enableAnsiEscapeCodes(io)) |_| { global_progress.terminal_mode = .ansi_escape_codes; - } else |_| if (is_windows and stderr.isTty(io)) { - global_progress.terminal_mode = TerminalMode{ .windows_api = .{ - .code_page = windows.kernel32.GetConsoleOutputCP(), - } }; + } else |_| if (is_windows) { + if (stderr.isTty(io)) { + global_progress.terminal_mode = TerminalMode{ .windows_api = .{ + .code_page = windows.kernel32.GetConsoleOutputCP(), + } }; + } else |err| switch (err) { + error.Canceled => { + // TODO: recancel here, or block cancelation for this function + return Node.none; + }, + } } if (global_progress.terminal_mode == .off) { -- 2.54.0