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