commit 2f30b0f44d5dbdb80362f181f35504965db733f9 (tree)
parent 406950f7566f7f220847ab2faa2c26914dcda257
Author: Andrew Kelley <andrew@ziglang.org>
Date: Fri, 19 Dec 2025 09:59:05 -0800
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.
Diffstat:
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git 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) {