mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
fix(runtime/windows): fix calculation of console size (#23873)
This commit is contained in:
parent
d3ced2fe43
commit
a9cdfdc98e
1 changed files with 14 additions and 4 deletions
|
@ -351,10 +351,20 @@ fn console_size_from_fd(
|
|||
{
|
||||
return Err(Error::last_os_error());
|
||||
}
|
||||
Ok(ConsoleSize {
|
||||
cols: bufinfo.dwSize.X as u32,
|
||||
rows: bufinfo.dwSize.Y as u32,
|
||||
})
|
||||
|
||||
// calculate the size of the visible window
|
||||
// * use over/under-flow protections b/c MSDN docs only imply that srWindow components are all non-negative
|
||||
// * ref: <https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str> @@ <https://archive.is/sfjnm>
|
||||
let cols = std::cmp::max(
|
||||
bufinfo.srWindow.Right as i32 - bufinfo.srWindow.Left as i32 + 1,
|
||||
0,
|
||||
) as u32;
|
||||
let rows = std::cmp::max(
|
||||
bufinfo.srWindow.Bottom as i32 - bufinfo.srWindow.Top as i32 + 1,
|
||||
0,
|
||||
) as u32;
|
||||
|
||||
Ok(ConsoleSize { cols, rows })
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue