commit c275dc575a56be5781dacd8342903eb725f80e99
parent 9d6916907223cfd45055d582e66f0472da3e86f7
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Tue, 8 Mar 2005 17:45:36 +0000
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
Diffstat:
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git 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
@@ -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