diff options
author | 2010-03-25 18:47:22 +0000 | |
---|---|---|
committer | 2010-03-25 18:47:22 +0000 | |
commit | 27b28cd40b2c6fbba6520a089d8c2ae59e58490f (patch) | |
tree | 2e1c57c466ba2dc365bb736459635ce045e5a2f7 | |
parent | be more strict in check_option(). (diff) | |
download | wireguard-openbsd-27b28cd40b2c6fbba6520a089d8c2ae59e58490f.tar.xz wireguard-openbsd-27b28cd40b2c6fbba6520a089d8c2ae59e58490f.zip |
Fix from readline 5.0 via Alexandr Shadchin to for a bug that prevents
some programs working correctly in tmux and screen.
From the readline changelog:
w. Fixed a bug in the callback read-char interface to make it work when a
readline function pushes some input onto the input stream with
rl_execute_next (like the incremental search functions).
ok deraadt
-rw-r--r-- | gnu/lib/libreadline/callback.c | 2 | ||||
-rw-r--r-- | gnu/lib/libreadline/input.c | 6 | ||||
-rw-r--r-- | gnu/lib/libreadline/rlprivate.h | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/gnu/lib/libreadline/callback.c b/gnu/lib/libreadline/callback.c index a8f4323c929..5b05ea5c5b7 100644 --- a/gnu/lib/libreadline/callback.c +++ b/gnu/lib/libreadline/callback.c @@ -131,7 +131,7 @@ rl_callback_read_char () if (in_handler == 0 && rl_linefunc) _rl_callback_newline (); } - if (rl_pending_input) + if (rl_pending_input || _rl_pushed_input_available ()) eof = readline_internal_char (); else break; diff --git a/gnu/lib/libreadline/input.c b/gnu/lib/libreadline/input.c index 841f05d1af9..7170272b229 100644 --- a/gnu/lib/libreadline/input.c +++ b/gnu/lib/libreadline/input.c @@ -154,6 +154,12 @@ _rl_unget_char (key) return (0); } +int +_rl_pushed_input_available () +{ + return (push_index != pop_index); +} + /* If a character is available to be read, then read it and stuff it into IBUFFER. Otherwise, just return. Returns number of characters read (0 if none available) and -1 on error (EIO). */ diff --git a/gnu/lib/libreadline/rlprivate.h b/gnu/lib/libreadline/rlprivate.h index ccb914469e7..391acb4ae84 100644 --- a/gnu/lib/libreadline/rlprivate.h +++ b/gnu/lib/libreadline/rlprivate.h @@ -131,6 +131,7 @@ extern int _rl_input_available PARAMS((void)); extern int _rl_input_queued PARAMS((int)); extern void _rl_insert_typein PARAMS((int)); extern int _rl_unget_char PARAMS((int)); +extern int _rl_pushed_input_available PARAMS((void)); /* macro.c */ extern void _rl_with_macro_input PARAMS((char *)); |