READLINE PATCH REPORT
=====================
Readline-Release: 8.3
Patch-ID: readline83-001
Bug-Reported-by: Dmitri A. Sergatskov <
[email protected]>
Bug-Reference-ID: <CAO+XyQ+ipUzFiXvRrDbTstfm1heZrerjvZGVaC60y=txMgyP+g@mail.gmail.com>
Bug-Reference-URL:
Bug-Description:
If an application uses readline's event hook, it is called while waiting for
input. There is a bug in the function that waits for available input that
causes it not to read that input under certain circumstances, resulting in
a loop where the event hook continues to be called, but there is no input
to stop it.
Patch (apply with `patch -p0'):
*** ../readline-8.3/input.c Fri May 2 09:29:05 2025
--- input.c Tue Jul 8 15:37:13 2025
***************
*** 262,266 ****
tty = fileno (rl_instream);
! /* Move this up here to give it first shot, but it can't set chars_avail */
/* XXX - need rl_chars_available_hook? */
if (rl_input_available_hook)
--- 262,267 ----
tty = fileno (rl_instream);
! /* Move this up here to give it first shot, but it can't set chars_avail,
! so we assume a single character is available. */
/* XXX - need rl_chars_available_hook? */
if (rl_input_available_hook)
***************
*** 269,272 ****
--- 270,275 ----
if (result == 0)
result = -1;
+ else
+ chars_avail = 1;
}
***************
*** 286,289 ****
--- 289,293 ----
if (result <= 0)
return 0; /* Nothing to read. */
+ result = -1; /* there is something, so check how many chars below */
}
#endif
*** ../readline-8.3/patchlevel 2013-11-15 08:11:11.000000000 -0500
--- patchlevel 2014-03-21 08:28:40.000000000 -0400
***************
*** 1,3 ****
# Do not edit -- exists only for use by patch
! 0
--- 1,3 ----
# Do not edit -- exists only for use by patch
! 1