From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcel Lorenz To: development@lists.ipfire.org Subject: [PATCH 2/3] readline: update to 7.0 Date: Tue, 06 Jun 2017 10:25:36 +0200 Message-ID: <20170606082537.13830-2-marcel.lorenz@ipfire.org> In-Reply-To: <20170606082537.13830-1-marcel.lorenz@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1857168020549164153==" List-Id: --===============1857168020549164153== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Signed-off-by: Marcel Lorenz --- config/rootfiles/common/readline | 8 +-- lfs/readline | 21 +++++--- src/patches/readline/readline63-001 | 43 --------------- src/patches/readline/readline63-002 | 44 --------------- src/patches/readline/readline63-003 | 47 ---------------- src/patches/readline/readline63-004 | 45 ---------------- src/patches/readline/readline63-005 | 58 -------------------- src/patches/readline/readline63-006 | 63 ---------------------- src/patches/readline/readline70-001 | 57 ++++++++++++++++++++ src/patches/readline/readline70-002 | 103 ++++++++++++++++++++++++++++++++++= ++ src/patches/readline/readline70-003 | 40 ++++++++++++++ 11 files changed, 219 insertions(+), 310 deletions(-) delete mode 100644 src/patches/readline/readline63-001 delete mode 100644 src/patches/readline/readline63-002 delete mode 100644 src/patches/readline/readline63-003 delete mode 100644 src/patches/readline/readline63-004 delete mode 100644 src/patches/readline/readline63-005 delete mode 100644 src/patches/readline/readline63-006 create mode 100644 src/patches/readline/readline70-001 create mode 100644 src/patches/readline/readline70-002 create mode 100644 src/patches/readline/readline70-003 diff --git a/config/rootfiles/common/readline b/config/rootfiles/common/readl= ine index b2ac26d..412de70 100644 --- a/config/rootfiles/common/readline +++ b/config/rootfiles/common/readline @@ -8,11 +8,11 @@ #usr/include/readline/rltypedefs.h #usr/include/readline/tilde.h #usr/lib/libhistory.so -usr/lib/libhistory.so.6 -usr/lib/libhistory.so.6.3 +usr/lib/libhistory.so.7 +usr/lib/libhistory.so.7.0 #usr/lib/libreadline.so -usr/lib/libreadline.so.6 -usr/lib/libreadline.so.6.3 +usr/lib/libreadline.so.7 +usr/lib/libreadline.so.7.0 #usr/share/doc/readline #usr/share/doc/readline/CHANGES #usr/share/doc/readline/INSTALL diff --git a/lfs/readline b/lfs/readline index eb488e3..5f88228 100644 --- a/lfs/readline +++ b/lfs/readline @@ -1,7 +1,7 @@ ############################################################################= ### # = # # IPFire.org - A linux based firewall = # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt = # +# Copyright (C) 2016 IPFire Team = # # = # # This program is free software: you can redistribute it and/or modify = # # it under the terms of the GNU General Public License as published by = # @@ -24,13 +24,15 @@ =20 include Config =20 -VER =3D 6.3 +VER =3D 7.0 =20 THISAPP =3D readline-$(VER) DL_FILE =3D $(THISAPP).tar.gz DL_FROM =3D $(URL_IPFIRE) DIR_APP =3D $(DIR_SRC)/$(THISAPP) TARGET =3D $(DIR_INFO)/$(THISAPP) +PROG =3D readline +PAK_VER =3D 1 =20 ############################################################################= ### # Top-level Rules @@ -40,7 +42,7 @@ objects =3D $(DL_FILE) =20 $(DL_FILE) =3D $(DL_FROM)/$(DL_FILE) =20 -$(DL_FILE)_MD5 =3D 33c8fb279e981274f485fd91da77e94a +$(DL_FILE)_MD5 =3D 205b03a87fc83dab653b628c59b9fc91 =20 install : $(TARGET) =20 @@ -63,6 +65,9 @@ $(patsubst %,$(DIR_DL)/%,$(objects)) : $(subst %,%_MD5,$(objects)) : @$(MD5) =20 +dist:=20 + @$(PAK) + ############################################################################= ### # Installation Details ############################################################################= ### @@ -71,9 +76,13 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) =20 - for i in $$(seq 1 6); do \ - cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline63-$= $(printf "%03d" "$${i}") || exit 1; \ - done + #for i in $$(seq 1 6); do \ + # cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/readline/readline63-= $$(printf "%03d" "$${i}") || exit 1; \ + #done + + # prevent in some cases to trigger a linking bug in ldconfig + cd $(DIR_APP) &&sed -i '/MV.*old/d' Makefile.in + cd $(DIR_APP) &&sed -i '/{OLDSUFF}/c:' support/shlib-install =20 cd $(DIR_APP) && ./configure --prefix=3D/usr --disable-static cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=3D-lncurses diff --git a/src/patches/readline/readline63-001 b/src/patches/readline/readl= ine63-001 deleted file mode 100644 index bae6a2f..0000000 --- a/src/patches/readline/readline63-001 +++ /dev/null @@ -1,43 +0,0 @@ - READLINE PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Readline-Release: 6.3 -Patch-ID: readline63-001 - -Bug-Reported-by: Daan van Rossum -Bug-Reference-ID: <20140307072523.GA14250(a)flash.uchicago.edu> -Bug-Reference-URL:=09 - -Bug-Description: - -The `.' command in vi mode cannot undo multi-key commands beginning with -`c', `d', and `y' (command plus motion specifier). - -Patch (apply with `patch -p0'): - -*** ../readline-6.3/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- readline.c 2014-03-07 15:20:33.000000000 -0500 -*************** -*** 965,969 **** - if (rl_editing_mode =3D=3D vi_mode && _rl_keymap =3D=3D vi_movement_keym= ap && - key !=3D ANYOTHERKEY && -! rl_key_sequence_length =3D=3D 1 && /* XXX */ - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); ---- 965,969 ---- - if (rl_editing_mode =3D=3D vi_mode && _rl_keymap =3D=3D vi_movement_keym= ap && - key !=3D ANYOTHERKEY && -! _rl_dispatching_keymap =3D=3D vi_movement_keymap && - _rl_vi_textmod_command (key)) - _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); -*** ../readline-6.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 - =20 -! 5 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - =20 -! 1 diff --git a/src/patches/readline/readline63-002 b/src/patches/readline/readl= ine63-002 deleted file mode 100644 index 0e79f13..0000000 --- a/src/patches/readline/readline63-002 +++ /dev/null @@ -1,44 +0,0 @@ - READLINE PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Readline-Release: 6.3 -Patch-ID: readline63-002 - -Bug-Reported-by: Anatol Pomozov -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/ms= g00010.html - -Bug-Description: - -When in callback mode, some readline commands can cause readline to seg -fault by passing invalid contexts to callback functions. - -Patch (apply with `patch -p0'): - -*** ../readline-6.3/readline.c 2013-10-28 14:58:06.000000000 -0400 ---- readline.c 2014-03-10 14:15:02.000000000 -0400 -*************** -*** 745,749 **** - =20 - RL_CHECK_SIGNALS (); -! if (r =3D=3D 0) /* success! */ - { - _rl_keyseq_chain_dispose (); ---- 745,750 ---- - =20 - RL_CHECK_SIGNALS (); -! /* We only treat values < 0 specially to simulate recursion. */ -! if (r >=3D 0 || (r =3D=3D -1 && (cxt->flags & KSEQ_SUBSEQ) =3D=3D 0)) /*= success! or failure! */ - { - _rl_keyseq_chain_dispose (); -*** ../readline-6.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 - =20 -! 1 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - =20 -! 2 diff --git a/src/patches/readline/readline63-003 b/src/patches/readline/readl= ine63-003 deleted file mode 100644 index d2cad94..0000000 --- a/src/patches/readline/readline63-003 +++ /dev/null @@ -1,47 +0,0 @@ - READLINE PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Readline-Release: 6.3 -Patch-ID: readline63-003 - -Bug-Reported-by: -Bug-Reference-ID: -Bug-Reference-URL: - -Bug-Description: - -There are debugging functions in the readline release that are theoretically -exploitable as security problems. They are not public functions, but have -global linkage. - -Patch (apply with `patch -p0'): - -*** ../readline-6.3/util.c 2013-09-02 13:36:12.000000000 -0400 ---- util.c 2014-03-20 10:25:53.000000000 -0400 -*************** -*** 477,480 **** ---- 479,483 ---- - } - =20 -+ #if defined (DEBUG) - #if defined (USE_VARARGS) - static FILE *_rl_tracefp; -*************** -*** 539,542 **** ---- 542,546 ---- - } - #endif -+ #endif /* DEBUG */ - =20 - =20 -*** ../readline-6.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 - =20 -! 2 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - =20 -! 3 diff --git a/src/patches/readline/readline63-004 b/src/patches/readline/readl= ine63-004 deleted file mode 100644 index 3cd89e3..0000000 --- a/src/patches/readline/readline63-004 +++ /dev/null @@ -1,45 +0,0 @@ - READLINE PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Readline-Release: 6.3 -Patch-ID: readline63-004 - -Bug-Reported-by: Egmont Koblinger -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg001= 53.html - -Bug-Description: - -The signal handling changes to bash and readline (to avoid running any code -in a signal handler context) cause the cursor to be placed on the wrong -line of a multi-line command after a ^C interrupts editing. - -Patch (apply with `patch -p0'): - -*** ../readline-6.3-patched/display.c 2013-12-27 13:10:56.000000000 -0500 ---- display.c 2014-03-27 11:52:45.000000000 -0400 -*************** -*** 2678,2682 **** - if (_rl_echoing_p) - { -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin =3D 0; - fflush (rl_outstream); ---- 2678,2683 ---- - if (_rl_echoing_p) - { -! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ -! _rl_move_vert (_rl_vis_botlin); - _rl_vis_botlin =3D 0; - fflush (rl_outstream); -*** ../readline-6.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 - =20 -! 3 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - =20 -! 4 diff --git a/src/patches/readline/readline63-005 b/src/patches/readline/readl= ine63-005 deleted file mode 100644 index 8a63738..0000000 --- a/src/patches/readline/readline63-005 +++ /dev/null @@ -1,58 +0,0 @@ - READLINE PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Readline-Release: 6.3 -Patch-ID: readline63-005 - -Bug-Reported-by: Juergen Daubert -Bug-Reference-ID: <20140303180430.GA7346(a)jue.netz> -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/ms= g00002.html - -Bug-Description: - -There are still applications using the deprecated Function/VFunction/etc. -typedefs in rltypedefs.h. This patch restores the typedefs, but attempts -to mark them as deprecated using gcc/clang attributes. Thanks to Max Horn -for the suggestion. - -Patch (apply with `patch -p0'): - -*** ../readline-6.3-patched/rltypedefs.h 2011-03-26 14:53:31.000000000 -0400 ---- rltypedefs.h 2014-04-10 11:30:45.000000000 -0400 -*************** -*** 27,30 **** ---- 27,49 ---- - #endif - =20 -+ /* Old-style, attempt to mark as deprecated in some way people will notice= . */ -+=20 -+ #if !defined (_FUNCTION_DEF) -+ # define _FUNCTION_DEF -+=20 -+ #if defined(__GNUC__) || defined(__clang__) -+ typedef int Function () __attribute__ ((deprecated)); -+ typedef void VFunction () __attribute__ ((deprecated)); -+ typedef char *CPFunction () __attribute__ ((deprecated)); -+ typedef char **CPPFunction () __attribute__ ((deprecated)); -+ #else -+ typedef int Function (); -+ typedef void VFunction (); -+ typedef char *CPFunction (); -+ typedef char **CPPFunction (); -+ #endif -+=20 -+ #endif /* _FUNCTION_DEF */ -+=20 - /* New style. */ - =20 -*** ../readline-6.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 - =20 -! 4 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - =20 -! 5 diff --git a/src/patches/readline/readline63-006 b/src/patches/readline/readl= ine63-006 deleted file mode 100644 index a3f0930..0000000 --- a/src/patches/readline/readline63-006 +++ /dev/null @@ -1,63 +0,0 @@ - READLINE PATCH REPORT - =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - -Readline-Release: 6.3 -Patch-ID: readline63-006 - -Bug-Reported-by: -Bug-Reference-ID: -Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg000= 69.html - -Bug-Description: - -Using reverse-i-search when horizontal scrolling is enabled does not redispl= ay -the entire line containing the successful search results. - -Patch (apply with `patch -p0'): - -*** ../readline-6.3-patched/display.c 2014-04-08 18:19:36.000000000 -0400 ---- display.c 2014-04-20 18:32:52.000000000 -0400 -*************** -*** 1638,1642 **** - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line =3D=3D 0 && !_rl_horizontal_scroll_mode && - current_invis_chars !=3D visible_wrap_offset) - { ---- 1638,1642 ---- - the spot of first difference is before the end of the invisible chars, - lendiff needs to be adjusted. */ -! if (current_line =3D=3D 0 && /* !_rl_horizontal_scroll_mode && */ - current_invis_chars !=3D visible_wrap_offset) - { -*************** -*** 1826,1831 **** - _rl_last_c_pos +=3D bytes_to_insert; - =20 - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! goto clear_rest_of_line; - } - } ---- 1826,1836 ---- - _rl_last_c_pos +=3D bytes_to_insert; - =20 -+ /* XXX - we only want to do this if we are at the end of the line -+ so we move there with _rl_move_cursor_relative */ - if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) -! { -! _rl_move_cursor_relative (ne-new, new); -! goto clear_rest_of_line; -! } - } - } -*** ../readline-6.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 - =20 -! 5 ---- 1,3 ---- - # Do not edit -- exists only for use by patch - =20 -! 6 diff --git a/src/patches/readline/readline70-001 b/src/patches/readline/readl= ine70-001 new file mode 100644 index 0000000..437a440 --- /dev/null +++ b/src/patches/readline/readline70-001 @@ -0,0 +1,57 @@ + READLINE PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Readline-Release: 7.0 +Patch-ID: readline70-001 + +Bug-Reported-by: Sean Zha +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-09/m= sg00107.html + +Bug-Description: + +Readline-7.0 changed the way the history list is initially allocated to redu= ce +the number of reallocations and copies. Users who set the readline +history-size variable to a very large number to essentially unlimit the size +of the history list will get memory allocation errors=20 + +Patch (apply with `patch -p0'): + +*** ../readline-7.0/history.c 2015-12-28 13:50:31.000000000 -0500 +--- history.c 2016-09-30 14:28:40.000000000 -0400 +*************** +*** 58,61 **** +--- 58,63 ---- + #define DEFAULT_HISTORY_INITIAL_SIZE 502 + =20 ++ #define MAX_HISTORY_INITIAL_SIZE 8192 ++=20 + /* The number of slots to increase the_history by. */ + #define DEFAULT_HISTORY_GROW_SIZE 50 +*************** +*** 308,312 **** + { + if (history_stifled && history_max_entries > 0) +! history_size =3D history_max_entries + 2; + else + history_size =3D DEFAULT_HISTORY_INITIAL_SIZE; +--- 310,316 ---- + { + if (history_stifled && history_max_entries > 0) +! history_size =3D (history_max_entries > MAX_HISTORY_INITIAL_SIZE) +! ? MAX_HISTORY_INITIAL_SIZE +! : history_max_entries + 2; + else + history_size =3D DEFAULT_HISTORY_INITIAL_SIZE; + +*** ../readline-7.0/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 + =20 +! 0 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + =20 +! 1 diff --git a/src/patches/readline/readline70-002 b/src/patches/readline/readl= ine70-002 new file mode 100644 index 0000000..ac76dae --- /dev/null +++ b/src/patches/readline/readline70-002 @@ -0,0 +1,103 @@ + READLINE PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Readline-Release: 7.0 +Patch-ID: readline70-002 + +Bug-Reported-by: Hong Cho +Bug-Reference-ID: +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2016-12/ms= g00002.html + +Bug-Description: + +There is a race condition in add_history() that can be triggered by a fatal +signal arriving between the time the history length is updated and the time +the history list update is completed. A later attempt to reference an +invalid history entry can cause a crash. + +Patch (apply with `patch -p0'): + +*** ../readline-7.0-patched/history.c 2016-11-11 13:42:49.000000000 -0500 +--- history.c 2016-12-05 10:37:51.000000000 -0500 +*************** +*** 280,283 **** +--- 280,284 ---- + { + HIST_ENTRY *temp; ++ int new_length; + =20 + if (history_stifled && (history_length =3D=3D history_max_entries)) +*************** +*** 296,306 **** + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ +- #if 0 +- for (i =3D 0; i < history_length; i++) +- the_history[i] =3D the_history[i + 1]; +- #else + memmove (the_history, the_history + 1, history_length * sizeof (HIST= _ENTRY *)); +- #endif + =20 + history_base++; + } +--- 297,303 ---- + /* Copy the rest of the entries, moving down one slot. Copy includes + trailing NULL. */ + memmove (the_history, the_history + 1, history_length * sizeof (HIST= _ENTRY *)); + =20 ++ new_length =3D history_length; + history_base++; + } +*************** +*** 316,320 **** + history_size =3D DEFAULT_HISTORY_INITIAL_SIZE; + the_history =3D (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENT= RY *)); +! history_length =3D 1; + } + else +--- 313,317 ---- + history_size =3D DEFAULT_HISTORY_INITIAL_SIZE; + the_history =3D (HIST_ENTRY **)xmalloc (history_size * sizeof (HIST_ENT= RY *)); +! new_length =3D 1; + } + else +*************** +*** 326,330 **** + xrealloc (the_history, history_size * sizeof (HIST_ENTRY *)); + } +! history_length++; + } + } +--- 323,327 ---- + xrealloc (the_history, history_size * sizeof (HIST_ENTRY *)); + } +! new_length =3D history_length + 1; + } + } +*************** +*** 332,337 **** + temp =3D alloc_history_entry ((char *)string, hist_inittime ()); + =20 +! the_history[history_length] =3D (HIST_ENTRY *)NULL; +! the_history[history_length - 1] =3D temp; + } + =20 +--- 329,335 ---- + temp =3D alloc_history_entry ((char *)string, hist_inittime ()); + =20 +! the_history[new_length] =3D (HIST_ENTRY *)NULL; +! the_history[new_length - 1] =3D temp; +! history_length =3D new_length; + } + =20 +*** ../readline-7.0/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 + =20 +! 1 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + =20 +! 2 diff --git a/src/patches/readline/readline70-003 b/src/patches/readline/readl= ine70-003 new file mode 100644 index 0000000..a19cae6 --- /dev/null +++ b/src/patches/readline/readline70-003 @@ -0,0 +1,40 @@ + READLINE PATCH REPORT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Readline-Release: 7.0 +Patch-ID: readline70-003 + +Bug-Reported-by: Fr=C3=A9d=C3=A9ric Bri=C3=A8re +Bug-Reference-ID: <20170120180724.7ydq7fb2hsp366dj(a)fabul.fbriere.net> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2017-01/ms= g00002.html + +Bug-Description: + +Readline-7.0 uses pselect(2) to allow readline to handle signals that do not +interrupt read(2), such as SIGALRM, before reading another character. The +signal mask used in the pselect call did not take into account signals the +calling application blocked before calling readline(). + +Patch (apply with `patch -p0'): + +*** ../readline-7.0-patched/input.c 2016-08-30 10:21:47.000000000 -0400 +--- input.c 2017-01-23 10:21:56.000000000 -0500 +*************** +*** 514,517 **** +--- 514,518 ---- + #if defined (HAVE_PSELECT) + sigemptyset (&empty_set); ++ sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &empty_set); + FD_ZERO (&readfds); + FD_SET (fileno (stream), &readfds); +*** ../readline-7.0/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 + =20 +! 2 +--- 1,3 ---- + # Do not edit -- exists only for use by patch + =20 +! 3 --=20 2.9.3 --===============1857168020549164153==--