From 86af1d5c16780df9ca278116231086acc25250a3 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 16 Nov 2022 22:23:00 +0530 Subject: [PATCH] Wrap EOF errors when doing terminal I/O --- tools/tui/loop/run.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/tui/loop/run.go b/tools/tui/loop/run.go index ae336b827..67d3828c5 100644 --- a/tools/tui/loop/run.go +++ b/tools/tui/loop/run.go @@ -333,6 +333,8 @@ func (self *Loop) run() (err error) { return err } } + case rwerr := <-err_channel: + return fmt.Errorf("Failed doing I/O with terminal: %w", rwerr) case s := <-signal_channel: err = self.on_signal(s.(unix.Signal)) if err != nil { @@ -340,7 +342,12 @@ func (self *Loop) run() (err error) { } case input_data, more := <-tty_read_channel: if !more { - return io.EOF + select { + case rwerr := <-err_channel: + return fmt.Errorf("Failed to read from terminal: %w", rwerr) + default: + return fmt.Errorf("Failed to read from terminal: %w", io.EOF) + } } err := self.dispatch_input_data(input_data) if err != nil {