mbox

[2/3] readline: update to 7.0

Message ID 20170606082537.13830-2-marcel.lorenz@ipfire.org
State Dropped
Headers

Message

Marcel Lorenz June 6, 2017, 6:25 p.m. UTC
  Signed-off-by: Marcel Lorenz <marcel.lorenz@ipfire.org>
---
 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
  

Comments

Michael Tremer June 7, 2017, 7 p.m. UTC | #1
If you update this, you need to make sure that a compat package exists for
libreadline.so.6 because many applications are linked against it.

Best,
-Michael

On Tue, 2017-06-06 at 10:25 +0200, Marcel Lorenz wrote:
> Signed-off-by: Marcel Lorenz <marcel.lorenz@ipfire.org>
> ---
>  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/readline
> 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  <info@ipfire.org>                         
>  #
>  #                                                                            
>  #
>  # 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 @@
>  
>  include Config
>  
> -VER        = 6.3
> +VER        = 7.0
>  
>  THISAPP    = readline-$(VER)
>  DL_FILE    = $(THISAPP).tar.gz
>  DL_FROM    = $(URL_IPFIRE)
>  DIR_APP    = $(DIR_SRC)/$(THISAPP)
>  TARGET     = $(DIR_INFO)/$(THISAPP)
> +PROG       = readline
> +PAK_VER    = 1
>  
>  #############################################################################
> ##
>  # Top-level Rules
> @@ -40,7 +42,7 @@ objects = $(DL_FILE)
>  
>  $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
>  
> -$(DL_FILE)_MD5 = 33c8fb279e981274f485fd91da77e94a
> +$(DL_FILE)_MD5 = 205b03a87fc83dab653b628c59b9fc91
>  
>  install : $(TARGET)
>  
> @@ -63,6 +65,9 @@ $(patsubst %,$(DIR_DL)/%,$(objects)) :
>  $(subst %,%_MD5,$(objects)) :
>  	@$(MD5)
>  
> +dist: 
> +	@$(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)
>  
> -	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
>  
>  	cd $(DIR_APP) && ./configure --prefix=/usr --disable-static
>  	cd $(DIR_APP) && make $(MAKETUNING) SHLIB_LIBS=-lncurses
> diff --git a/src/patches/readline/readline63-001
> b/src/patches/readline/readline63-001
> deleted file mode 100644
> index bae6a2f..0000000
> --- a/src/patches/readline/readline63-001
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -			   READLINE PATCH REPORT
> -			   =====================
> -
> -Readline-Release: 6.3
> -Patch-ID: readline63-001
> -
> -Bug-Reported-by:	Daan van Rossum <daan@flash.uchicago.edu>
> -Bug-Reference-ID:	<20140307072523.GA14250@flash.uchicago.edu>
> -Bug-Reference-URL:	
> -
> -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 == vi_mode && _rl_keymap == vi_movement_keymap &&
> -        key != ANYOTHERKEY &&
> -!       rl_key_sequence_length == 1 &&	/* XXX */
> -        _rl_vi_textmod_command (key))
> -      _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign);
> ---- 965,969 ----
> -    if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap &&
> -        key != ANYOTHERKEY &&
> -!       _rl_dispatching_keymap == 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
> -  
> -! 5
> ---- 1,3 ----
> -  # Do not edit -- exists only for use by patch
> -  
> -! 1
> diff --git a/src/patches/readline/readline63-002
> b/src/patches/readline/readline63-002
> deleted file mode 100644
> index 0e79f13..0000000
> --- a/src/patches/readline/readline63-002
> +++ /dev/null
> @@ -1,44 +0,0 @@
> -			   READLINE PATCH REPORT
> -			   =====================
> -
> -Readline-Release: 6.3
> -Patch-ID: readline63-002
> -
> -Bug-Reported-by:	Anatol Pomozov <anatol.pomozov@gmail.com>
> -Bug-Reference-ID:	<CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ
> @mail.gmail.com>
> -Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-readline/2014
> -03/msg00010.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 ****
> -  
> -    RL_CHECK_SIGNALS ();
> -!   if (r == 0)			/* success! */
> -      {
> -        _rl_keyseq_chain_dispose ();
> ---- 745,750 ----
> -  
> -    RL_CHECK_SIGNALS ();
> -!   /* We only treat values < 0 specially to simulate recursion. */
> -!   if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 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
> -  
> -! 1
> ---- 1,3 ----
> -  # Do not edit -- exists only for use by patch
> -  
> -! 2
> diff --git a/src/patches/readline/readline63-003
> b/src/patches/readline/readline63-003
> deleted file mode 100644
> index d2cad94..0000000
> --- a/src/patches/readline/readline63-003
> +++ /dev/null
> @@ -1,47 +0,0 @@
> -			   READLINE PATCH REPORT
> -			   =====================
> -
> -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 ----
> -  }
> -  
> -+ #if defined (DEBUG)
> -  #if defined (USE_VARARGS)
> -  static FILE *_rl_tracefp;
> -***************
> -*** 539,542 ****
> ---- 542,546 ----
> -  }
> -  #endif
> -+ #endif /* DEBUG */
> -  
> -  
> -*** ../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
> -  
> -! 2
> ---- 1,3 ----
> -  # Do not edit -- exists only for use by patch
> -  
> -! 3
> diff --git a/src/patches/readline/readline63-004
> b/src/patches/readline/readline63-004
> deleted file mode 100644
> index 3cd89e3..0000000
> --- a/src/patches/readline/readline63-004
> +++ /dev/null
> @@ -1,45 +0,0 @@
> -			   READLINE PATCH REPORT
> -			   =====================
> -
> -Readline-Release: 6.3
> -Patch-ID: readline63-004
> -
> -Bug-Reported-by:	Egmont Koblinger <egmont@gmail.com>
> -Bug-Reference-ID:	<CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg
> @mail.gmail.com>
> -Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-03/
> msg00153.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 = 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 = 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
> -  
> -! 3
> ---- 1,3 ----
> -  # Do not edit -- exists only for use by patch
> -  
> -! 4
> diff --git a/src/patches/readline/readline63-005
> b/src/patches/readline/readline63-005
> deleted file mode 100644
> index 8a63738..0000000
> --- a/src/patches/readline/readline63-005
> +++ /dev/null
> @@ -1,58 +0,0 @@
> -			   READLINE PATCH REPORT
> -			   =====================
> -
> -Readline-Release: 6.3
> -Patch-ID: readline63-005
> -
> -Bug-Reported-by:	Juergen Daubert <jue@jue.li>
> -Bug-Reference-ID:	<20140303180430.GA7346@jue.netz>
> -Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-readline/2014
> -03/msg00002.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
> -  
> -+ /* Old-style, attempt to mark as deprecated in some way people will notice.
> */
> -+ 
> -+ #if !defined (_FUNCTION_DEF)
> -+ #  define _FUNCTION_DEF
> -+ 
> -+ #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
> -+ 
> -+ #endif /* _FUNCTION_DEF */
> -+ 
> -  /* New style. */
> -  
> -*** ../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
> -  
> -! 4
> ---- 1,3 ----
> -  # Do not edit -- exists only for use by patch
> -  
> -! 5
> diff --git a/src/patches/readline/readline63-006
> b/src/patches/readline/readline63-006
> deleted file mode 100644
> index a3f0930..0000000
> --- a/src/patches/readline/readline63-006
> +++ /dev/null
> @@ -1,63 +0,0 @@
> -			   READLINE PATCH REPORT
> -			   =====================
> -
> -Readline-Release: 6.3
> -Patch-ID: readline63-006
> -
> -Bug-Reported-by:	<Trond.Endrestol@ximalas.info>
> -Bug-Reference-ID:	<alpine.BSF.2.03.1404192114310.1973@enterprise.ximal
> as.info>
> -Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2014-04/
> msg00069.html
> -
> -Bug-Description:
> -
> -Using reverse-i-search when horizontal scrolling is enabled does not
> redisplay
> -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 == 0 && !_rl_horizontal_scroll_mode &&
> -        current_invis_chars != 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 == 0 && /* !_rl_horizontal_scroll_mode && */
> -        current_invis_chars != visible_wrap_offset)
> -      {
> -***************
> -*** 1826,1831 ****
> -  		_rl_last_c_pos += bytes_to_insert;
> -  
> -  	      if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
> -! 		goto clear_rest_of_line;
> -  	    }
> -  	}
> ---- 1826,1836 ----
> -  		_rl_last_c_pos += bytes_to_insert;
> -  
> -+ 	      /* 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
> -  
> -! 5
> ---- 1,3 ----
> -  # Do not edit -- exists only for use by patch
> -  
> -! 6
> diff --git a/src/patches/readline/readline70-001
> b/src/patches/readline/readline70-001
> new file mode 100644
> index 0000000..437a440
> --- /dev/null
> +++ b/src/patches/readline/readline70-001
> @@ -0,0 +1,57 @@
> +			   READLINE PATCH REPORT
> +			   =====================
> +
> +Readline-Release: 7.0
> +Patch-ID: readline70-001
> +
> +Bug-Reported-by:        Sean Zha <freeman_cha@hotmail.com>
> +Bug-Reference-ID:       <BN3PR01MB13657D9303EB94BF6E54216E8CCA0@BN3PR01MB1365
> .prod.exchangelabs.com>
> +Bug-Reference-URL:      http://lists.gnu.org/archive/html/bug-bash/2016-09/ms
> g00107.html
> +
> +Bug-Description:
> +
> +Readline-7.0 changed the way the history list is initially allocated to
> reduce
> +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 
> +
> +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
> +  
> ++ #define MAX_HISTORY_INITIAL_SIZE	8192
> ++ 
> +  /* 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 = history_max_entries + 2;
> +  	  else
> +  	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
> +--- 310,316 ----
> +  	{
> +  	  if (history_stifled && history_max_entries > 0)
> +! 	    history_size = (history_max_entries > MAX_HISTORY_INITIAL_SIZE)
> +! 				? MAX_HISTORY_INITIAL_SIZE
> +! 				: history_max_entries + 2;
> +  	  else
> +  	    history_size = 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
> +  
> +! 0
> +--- 1,3 ----
> +  # Do not edit -- exists only for use by patch
> +  
> +! 1
> diff --git a/src/patches/readline/readline70-002
> b/src/patches/readline/readline70-002
> new file mode 100644
> index 0000000..ac76dae
> --- /dev/null
> +++ b/src/patches/readline/readline70-002
> @@ -0,0 +1,103 @@
> +			   READLINE PATCH REPORT
> +			   =====================
> +
> +Readline-Release: 7.0
> +Patch-ID: readline70-002
> +
> +Bug-Reported-by:	Hong Cho <hong.cho@citrix.com>
> +Bug-Reference-ID:	<c30b5fe62b2543af8297e47ca487c29c@SJCPEX02CL02.citri
> te.net>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-readline/2016
> -12/msg00002.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;
> +  
> +    if (history_stifled && (history_length == history_max_entries))
> +***************
> +*** 296,306 ****
> +        /* Copy the rest of the entries, moving down one slot.  Copy includes
> +  	 trailing NULL.  */
> +- #if 0
> +-       for (i = 0; i < history_length; i++)
> +- 	the_history[i] = the_history[i + 1];
> +- #else
> +        memmove (the_history, the_history + 1, history_length * sizeof
> (HIST_ENTRY *));
> +- #endif
> +  
> +        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 *));
> +  
> ++       new_length = history_length;
> +        history_base++;
> +      }
> +***************
> +*** 316,320 ****
> +  	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
> +  	  the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof
> (HIST_ENTRY *));
> +! 	  history_length = 1;
> +  	}
> +        else
> +--- 313,317 ----
> +  	    history_size = DEFAULT_HISTORY_INITIAL_SIZE;
> +  	  the_history = (HIST_ENTRY **)xmalloc (history_size * sizeof
> (HIST_ENTRY *));
> +! 	  new_length = 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 = history_length + 1;
> +  	}
> +      }
> +***************
> +*** 332,337 ****
> +    temp = alloc_history_entry ((char *)string, hist_inittime ());
> +  
> +!   the_history[history_length] = (HIST_ENTRY *)NULL;
> +!   the_history[history_length - 1] = temp;
> +  }
> +  
> +--- 329,335 ----
> +    temp = alloc_history_entry ((char *)string, hist_inittime ());
> +  
> +!   the_history[new_length] = (HIST_ENTRY *)NULL;
> +!   the_history[new_length - 1] = temp;
> +!   history_length = new_length;
> +  }
> +  
> +*** ../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
> +  
> +! 1
> +--- 1,3 ----
> +  # Do not edit -- exists only for use by patch
> +  
> +! 2
> diff --git a/src/patches/readline/readline70-003
> b/src/patches/readline/readline70-003
> new file mode 100644
> index 0000000..a19cae6
> --- /dev/null
> +++ b/src/patches/readline/readline70-003
> @@ -0,0 +1,40 @@
> +			   READLINE PATCH REPORT
> +			   =====================
> +
> +Readline-Release: 7.0
> +Patch-ID: readline70-003
> +
> +Bug-Reported-by:	Frédéric Brière <fbriere@fbriere.net>
> +Bug-Reference-ID:	<20170120180724.7ydq7fb2hsp366dj@fabul.fbriere.net>
> +Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-readline/2017
> -01/msg00002.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
> +  
> +! 2
> +--- 1,3 ----
> +  # Do not edit -- exists only for use by patch
> +  
> +! 3