]> git.wh0rd.org Git - nano.git/commitdiff
attempt at fixing a problem tracked down by Jim Uhl, where nano will go
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 8 Mar 2005 17:45:36 +0000 (17:45 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Tue, 8 Mar 2005 17:45:36 +0000 (17:45 +0000)
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

ChangeLog
src/winio.c

index e0b7e18966cd96151061e9ca7e24f5da2442cb12..00ce9cedc5bf808ea6743acca68068297f936354 100644 (file)
--- 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
index f3ed69bb3e7ab4e13be7ad67e330b742cf6238bd..522a79ed869d794c58c99c90fc7dd7e3dfbccd74 100644 (file)
@@ -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