From 75482d82d41d9b6663e922421d390870f00a3163 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaros=C5=82aw=20Pelczar?= <47525085+jarekpelczar@users.noreply.github.com> Date: Sat, 9 Oct 2021 11:51:00 +0200 Subject: [PATCH] Use sensible defaults in case TIOCGWINSZ fails (#224) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This can happen for example in embedded linux, in case the application is started via serial terminal. Signed-off-by: Jarosław Pelczar Co-authored-by: ArthurSonzogni --- CHANGELOG.md | 3 +++ src/ftxui/screen/terminal.cpp | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 137957f3..e68a3160 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ ## Current +## Bug +- On Unix system, fallback to {80,25} screen dimension on failure. + ## 0.10 (2021-09-30) ## Bug diff --git a/src/ftxui/screen/terminal.cpp b/src/ftxui/screen/terminal.cpp index 5f02fc02..42497846 100644 --- a/src/ftxui/screen/terminal.cpp +++ b/src/ftxui/screen/terminal.cpp @@ -33,8 +33,11 @@ Dimensions Terminal::Size() { return Dimensions{80, 80}; #else - winsize w; + winsize w{}; ioctl(STDOUT_FILENO, TIOCGWINSZ, &w); + if (w.ws_col == 0 || w.ws_row == 0) { + return Dimensions{80, 25}; + } return Dimensions{w.ws_col, w.ws_row}; #endif }