authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-01 15:13:55-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-01 15:14:44-04:00
log94b0d0e80242563f4ad7ad41e3c0f5193a60b70c
treed63724efc516a03c4056a6ebf2ea0cecc722f669
parent5418efa1e584538dd32589c274498de9ec412162

std.progress: handle error from FillConsoleOutputAttribute

I observed this returning an error. Fall back to not doing terminal stuff if an error occurs here. See #5244

1 files changed, 6 insertions(+), 2 deletions(-)

lib/std/progress.zig+6-2
......@@ -145,7 +145,7 @@ pub const Progress = struct {
145145 if (self.supports_ansi_escape_codes) {
146146 end += (std.fmt.bufPrint(self.output_buffer[end..], "\x1b[{}D", .{self.columns_written}) catch unreachable).len;
147147 end += (std.fmt.bufPrint(self.output_buffer[end..], "\x1b[0K", .{}) catch unreachable).len;
148 } else if (std.builtin.os.tag == .windows) {
148 } else if (std.builtin.os.tag == .windows) winapi: {
149149 var info: windows.CONSOLE_SCREEN_BUFFER_INFO = undefined;
150150 if (windows.kernel32.GetConsoleScreenBufferInfo(file.handle, &info) != windows.TRUE)
151151 unreachable;
......@@ -167,7 +167,11 @@ pub const Progress = struct {
167167 fill_chars,
168168 cursor_pos,
169169 &written,
170 ) != windows.TRUE) unreachable;
170 ) != windows.TRUE) {
171 // Stop trying to write to this file.
172 self.terminal = null;
173 break :winapi;
174 }
171175 if (windows.kernel32.FillConsoleOutputCharacterA(
172176 file.handle,
173177 ' ',