diff --git a/lib/std/progress.zig b/lib/std/progress.zig index def438da79..d73f3ee139 100644 --- a/lib/std/progress.zig +++ b/lib/std/progress.zig @@ -145,7 +145,7 @@ pub const Progress = struct { if (self.supports_ansi_escape_codes) { end += (std.fmt.bufPrint(self.output_buffer[end..], "\x1b[{}D", .{self.columns_written}) catch unreachable).len; end += (std.fmt.bufPrint(self.output_buffer[end..], "\x1b[0K", .{}) catch unreachable).len; - } else if (std.builtin.os.tag == .windows) { + } else if (std.builtin.os.tag == .windows) winapi: { var info: windows.CONSOLE_SCREEN_BUFFER_INFO = undefined; if (windows.kernel32.GetConsoleScreenBufferInfo(file.handle, &info) != windows.TRUE) unreachable; @@ -167,7 +167,11 @@ pub const Progress = struct { fill_chars, cursor_pos, &written, - ) != windows.TRUE) unreachable; + ) != windows.TRUE) { + // Stop trying to write to this file. + self.terminal = null; + break :winapi; + } if (windows.kernel32.FillConsoleOutputCharacterA( file.handle, ' ',