nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 8d1a666dcfbb9e9fcf6ce7a875a4ad4f5ea932ce
parent fc01c5a10ee729d6f82e109890b593aef976205e
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Tue, 29 Jun 2021 13:20:16 +0200

input: give up on the input stream only after millions of errors

This mitigates a problem seen sometimes among the Red Hat crash reports:
somehow wgetch() keeps returning ERR, as if it were in nodelay mode.
(I've seen this happen once after nano came out of suspension.)

Using a much larger error-count value gives the user a few seconds
to type something and hopefully get out of the error condition.

Diffstat:
Msrc/winio.c | 4++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/winio.c b/src/winio.c @@ -233,11 +233,11 @@ void read_keys_from(WINDOW *win) } } #endif - /* When we've failed to get a keycode over a hundred times in a row, + /* When we've failed to get a keycode millions of times in a row, * assume our input source is gone and die gracefully. We could * check if errno is set to EIO ("Input/output error") and die in * that case, but it's not always set properly. Argh. */ - if (input == ERR && ++errcount == 123) + if (input == ERR && ++errcount == 12345678) die(_("Too many errors from stdin\n")); }