diff --git a/src/terminal/sys/unix.rs b/src/terminal/sys/unix.rs index b651d902..3ce40df6 100644 --- a/src/terminal/sys/unix.rs +++ b/src/terminal/sys/unix.rs @@ -40,10 +40,11 @@ pub(crate) fn size() -> Result<(u16, u16)> { }; if wrap_with_result(unsafe { ioctl(fd, TIOCGWINSZ.into(), &mut size) }).is_ok() { - Ok((size.ws_col, size.ws_row)) - } else { - tput_size().ok_or_else(|| std::io::Error::last_os_error().into()) + if size.ws_col != 0 && size.ws_row != 0 { + return Ok((size.ws_col, size.ws_row)); + } } + tput_size().ok_or_else(|| std::io::Error::last_os_error().into()) } pub(crate) fn enable_raw_mode() -> Result<()> {