From: David Lawrence Ramsey Date: Tue, 8 Mar 2005 17:45:36 +0000 (+0000) Subject: attempt at fixing a problem tracked down by Jim Uhl, where nano will go X-Git-Tag: v1.3.6~64 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=c275dc575a56be5781dacd8342903eb725f80e99;p=nano.git attempt at fixing a problem tracked down by Jim Uhl, where nano will go into an infinite loop if the terminal it's running in dies unexpectedly due to a signal git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2339 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index e0b7e189..00ce9ced 100644 --- a/ChangeLog +++ b/ChangeLog @@ -233,6 +233,11 @@ CVS code - revstrstr(), revstristr() - Add asserts. (DLR) - winio.c: + get_buffer() + - If we get ERR when using blocking input, it means that the + input source that we were using is gone. In this case, call + handle_hupterm(), so that nano dies gracefully instead of + going into an infinite loop. (DLR, found by Jim Uhl) titlebar() - Rename some variables for consistency, make space an int instead of a size_t, properly handle the case where the prefix diff --git a/src/winio.c b/src/winio.c index f3ed69bb..522a79ed 100644 --- a/src/winio.c +++ b/src/winio.c @@ -140,6 +140,11 @@ void get_buffer(WINDOW *win) input = wgetch(win); + /* If we get ERR when using blocking input, it means that the input + * source that we were using is gone, so die gracefully. */ + if (input == ERR) + handle_hupterm(0); + #ifndef NANO_SMALL allow_pending_sigwinch(FALSE); #endif