			   READLINE PATCH REPORT
			   =====================

Readline-Release: 8.0
Patch-ID: readline80-002

Bug-Reported-by:	lessbug@qq.com
Bug-Reference-ID:	<tencent_6AA531D9A5CC4121D86BD5CDA2E0DA98C605@qq.com>
Bug-Reference-URL:

Bug-Description:

When using previous-history to go back beyond the beginning of the history list,
it's possible to move to an incorrect partial line.

Patch (apply with `patch -p0'):

*** ../readline-8.0-patched/misc.c	2017-07-07 17:30:12.000000000 -0400
--- misc.c	2019-05-16 11:43:46.000000000 -0400
***************
*** 577,580 ****
--- 590,594 ----
  {
    HIST_ENTRY *old_temp, *temp;
+   int had_saved_line;
  
    if (count < 0)
***************
*** 589,592 ****
--- 603,607 ----
  
    /* If we don't have a line saved, then save this one. */
+   had_saved_line = _rl_saved_line_for_history != 0;
    rl_maybe_save_line ();
  
***************
*** 612,616 ****
    if (temp == 0)
      {
!       rl_maybe_unsave_line ();
        rl_ding ();
      }
--- 627,632 ----
    if (temp == 0)
      {
!       if (had_saved_line == 0)
!         _rl_free_saved_history_line ();
        rl_ding ();
      }
*** ../readline-8.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
