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

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

Bug-Reported-by:	HIROSE Masaaki <hirose31@gmail.com>
Bug-Reference-ID:	<CAGSOfA-RqiTe=+GsXsDKyZrrMWH4bDbXgMVVegMa6OjqC5xbnQ@mail.gmail.com>
Bug-Reference-URL:	https://lists.gnu.org/archive/html/bug-bash/2019-05/msg00038.html

Bug-Description:

Reading history entries with timestamps can result in history entries joined
by linefeeds.

Patch (apply with `patch -p0'):

*** ../readline-8.0-patched/histfile.c	2018-06-11 09:14:52.000000000 -0400
--- histfile.c	2019-05-16 15:55:57.000000000 -0400
***************
*** 370,376 ****
  
    has_timestamps = HIST_TIMESTAMP_START (buffer);
!   history_multiline_entries += has_timestamps && history_write_timestamps;  
  
    /* Skip lines until we are at FROM. */
    for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++)
      if (*line_end == '\n')
--- 370,378 ----
  
    has_timestamps = HIST_TIMESTAMP_START (buffer);
!   history_multiline_entries += has_timestamps && history_write_timestamps;
  
    /* Skip lines until we are at FROM. */
+   if (has_timestamps)
+     last_ts = buffer;
    for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++)
      if (*line_end == '\n')
***************
*** 381,385 ****
--- 383,398 ----
  	if (HIST_TIMESTAMP_START(p) == 0)
  	  current_line++;
+ 	else
+ 	  last_ts = p;
  	line_start = p;
+ 	/* If we are at the last line (current_line == from) but we have
+ 	   timestamps (has_timestamps), then line_start points to the
+ 	   text of the last command, and we need to skip to its end. */
+ 	if (current_line >= from && has_timestamps)
+ 	  {
+ 	    for (line_end = p; line_end < bufend && *line_end != '\n'; line_end++)
+ 	      ;
+ 	    line_start = (*line_end == '\n') ? line_end + 1 : line_end;
+ 	  }
        }
  

*** ../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
  
! 2
--- 1,3 ----
  # Do not edit -- exists only for use by patch
  
! 3
