READLINE PATCH REPORT ===================== Readline-Release: 8.2 Patch-ID: readline82-011 Bug-Reported-by: Grisha Levit <grishalevit@gmail.com> Bug-Reference-ID: <CAMu=BrqWa_iNkiEwchpFmtrUhFrAanOO8pjy7VCKqRKUvqdsbw@mail.gmail.com> Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2024-02/msg00075.html Bug-Description: Patch (apply with `patch -p0'): Some systems (e.g., macOS) send signals early on in interactive initialization, so readline should retry a failed open of the init file. *** ../readline-8.2-patched/bind.c Wed Feb 9 11:02:22 2022 --- bind.c Tue Apr 23 15:07:13 2024 *************** *** 979,987 **** int i, file; ! file = -1; ! if (((file = open (filename, O_RDONLY, 0666)) < 0) || (fstat (file, &finfo) < 0)) { if (file >= 0) close (file); return ((char *)NULL); } --- 969,986 ---- int i, file; ! file = open (filename, O_RDONLY, 0666); ! /* If the open is interrupted, retry once */ ! if (file < 0 && errno == EINTR) { + RL_CHECK_SIGNALS (); + file = open (filename, O_RDONLY, 0666); + } + + if ((file < 0) || (fstat (file, &finfo) < 0)) + { + i = errno; if (file >= 0) close (file); + errno = i; return ((char *)NULL); } *************** *** 992,999 **** --- 991,1001 ---- if (file_size != finfo.st_size || file_size + 1 < file_size) { + i = errno; if (file >= 0) close (file); #if defined (EFBIG) errno = EFBIG; + #else + errno = i; #endif return ((char *)NULL); *** ../readline-8.2/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 ! 10 --- 1,3 ---- # Do not edit -- exists only for use by patch ! 11