diff --git a/core/os/file_windows.odin b/core/os/file_windows.odin index 8a0f2ed64..5368f51cf 100644 --- a/core/os/file_windows.odin +++ b/core/os/file_windows.odin @@ -108,7 +108,8 @@ read_console :: proc(handle: win32.HANDLE, b: []byte) -> (n: int, err: Errno) { buf8: [4*BUF_SIZE]u8 for n < len(b) && err == 0 { - max_read := u32(min(BUF_SIZE, len(b)/4)) + min_read := max(min(len(b), 4), len(b)/4) + max_read := u32(min(BUF_SIZE, min_read)) single_read_length: u32 ok := win32.ReadConsoleW(handle, &buf16[0], max_read, &single_read_length, nil) @@ -129,7 +130,7 @@ read_console :: proc(handle: win32.HANDLE, b: []byte) -> (n: int, err: Errno) { b[n] = x n += 1 } - if ctrl_z || single_read_length < len(buf16) { + if ctrl_z || single_read_length < max_read { break } }