Tim Waugh b13041
			     BASH PATCH REPORT
Tim Waugh b13041
			     =================
Tim Waugh b13041
Tim Waugh b13041
Bash-Release: 3.2
Tim Waugh b13041
Patch-ID: bash32-017
Tim Waugh b13041
Tim Waugh b13041
Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
Tim Waugh b13041
Bug-Reference-ID: <1173636022.7039.36.camel@localhost>
Tim Waugh b13041
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html
Tim Waugh b13041
Tim Waugh b13041
Bug-Description:
Tim Waugh b13041
Tim Waugh b13041
When restoring the original prompt after finishing an incremental search,
Tim Waugh b13041
bash sometimes places the cursor incorrectly if the primary prompt contains
Tim Waugh b13041
invisible characters.
Tim Waugh b13041
Tim Waugh b13041
Patch:
Tim Waugh b13041
Tim Waugh b13041
*** ../bash-3.2.16/lib/readline/display.c	Fri Apr 20 13:30:16 2007
Tim Waugh b13041
--- lib/readline/display.c	Fri Apr 20 15:17:01 2007
Tim Waugh b13041
***************
Tim Waugh b13041
*** 1599,1604 ****
Tim Waugh b13041
  	  if (temp > 0)
Tim Waugh b13041
  	    {
Tim Waugh b13041
  	      _rl_output_some_chars (nfd, temp);
Tim Waugh b13041
! 	      _rl_last_c_pos += _rl_col_width (nfd, 0, temp);;
Tim Waugh b13041
  	    }
Tim Waugh b13041
  	}
Tim Waugh b13041
--- 1599,1618 ----
Tim Waugh b13041
  	  if (temp > 0)
Tim Waugh b13041
  	    {
Tim Waugh b13041
+ 	      /* If nfd begins at the prompt, or before the invisible
Tim Waugh b13041
+ 		 characters in the prompt, we need to adjust _rl_last_c_pos
Tim Waugh b13041
+ 		 in a multibyte locale to account for the wrap offset and
Tim Waugh b13041
+ 		 set cpos_adjusted accordingly. */
Tim Waugh b13041
  	      _rl_output_some_chars (nfd, temp);
Tim Waugh b13041
! 	      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
Tim Waugh b13041
! 		{
Tim Waugh b13041
!                   _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
Tim Waugh b13041
!                   if (current_line == 0 && wrap_offset &&  ((nfd - new) <= prompt_last_invisible))
Tim Waugh b13041
! 		    {
Tim Waugh b13041
! 		      _rl_last_c_pos -= wrap_offset;
Tim Waugh b13041
! 		      cpos_adjusted = 1;
Tim Waugh b13041
! 		    }
Tim Waugh b13041
! 		}
Tim Waugh b13041
!               else
Tim Waugh b13041
!                 _rl_last_c_pos += temp;
Tim Waugh b13041
  	    }
Tim Waugh b13041
  	}
Tim Waugh b13041
***************
Tim Waugh b13041
*** 1608,1613 ****
Tim Waugh b13041
--- 1622,1639 ----
Tim Waugh b13041
  	  if (temp > 0)
Tim Waugh b13041
  	    {
Tim Waugh b13041
+ 	      /* If nfd begins at the prompt, or before the invisible
Tim Waugh b13041
+ 		 characters in the prompt, we need to adjust _rl_last_c_pos
Tim Waugh b13041
+ 		 in a multibyte locale to account for the wrap offset and
Tim Waugh b13041
+ 		 set cpos_adjusted accordingly. */
Tim Waugh b13041
  	      _rl_output_some_chars (nfd, temp);
Tim Waugh b13041
  	      _rl_last_c_pos += col_temp;		/* XXX */
Tim Waugh b13041
+ 	      if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
Tim Waugh b13041
+ 		{
Tim Waugh b13041
+ 		  if (current_line == 0 && wrap_offset &&  ((nfd - new) <= prompt_last_invisible))
Tim Waugh b13041
+ 		    {
Tim Waugh b13041
+ 		      _rl_last_c_pos -= wrap_offset;
Tim Waugh b13041
+ 		      cpos_adjusted = 1;
Tim Waugh b13041
+ 		    }
Tim Waugh b13041
+ 		}
Tim Waugh b13041
  	    }
Tim Waugh b13041
  	  lendiff = (oe - old) - (ne - new);
Tim Waugh b13041
*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
Tim Waugh b13041
--- patchlevel.h	Mon Oct 16 14:22:54 2006
Tim Waugh b13041
***************
Tim Waugh b13041
*** 26,30 ****
Tim Waugh b13041
     looks for to find the patch level (for the sccs version string). */
Tim Waugh b13041
  
Tim Waugh b13041
! #define PATCHLEVEL 16
Tim Waugh b13041
  
Tim Waugh b13041
  #endif /* _PATCHLEVEL_H_ */
Tim Waugh b13041
--- 26,30 ----
Tim Waugh b13041
     looks for to find the patch level (for the sccs version string). */
Tim Waugh b13041
  
Tim Waugh b13041
! #define PATCHLEVEL 17
Tim Waugh b13041
  
Tim Waugh b13041
  #endif /* _PATCHLEVEL_H_ */