Tomas Janousek 9bf3d5
			     BASH PATCH REPORT
Tomas Janousek 9bf3d5
			     =================
Tomas Janousek 9bf3d5
Tomas Janousek 9bf3d5
Bash-Release: 3.2
Tomas Janousek 9bf3d5
Patch-ID: bash32-027
Tomas Janousek 9bf3d5
Tomas Janousek 9bf3d5
Bug-Reported-by:	dAniel hAhler <ubuntu@thequod.de>
Tomas Janousek 9bf3d5
Bug-Reference-ID:	<4702ED8A.5000503@thequod.de>
Tomas Janousek 9bf3d5
Bug-Reference-URL:	https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938
Tomas Janousek 9bf3d5
Tomas Janousek 9bf3d5
Bug-Description:
Tomas Janousek 9bf3d5
Tomas Janousek 9bf3d5
When updating the display after displaying, for instance, a list of possible
Tomas Janousek 9bf3d5
completions, readline will place the cursor at the wrong position if the
Tomas Janousek 9bf3d5
prompt contains invisible characters and a newline.
Tomas Janousek 9bf3d5
Tomas Janousek 9bf3d5
Patch:
Tomas Janousek 9bf3d5
Tomas Janousek 9bf3d5
*** ../bash-3.2.25/lib/readline/display.c	Mon Aug  6 14:26:29 2007
Tomas Janousek 9bf3d5
--- lib/readline/display.c	Wed Oct 10 22:43:58 2007
Tomas Janousek 9bf3d5
***************
Tomas Janousek 9bf3d5
*** 1049,1053 ****
Tomas Janousek 9bf3d5
  	      else
Tomas Janousek 9bf3d5
  		tx = nleft;
Tomas Janousek 9bf3d5
! 	      if (_rl_last_c_pos > tx)
Tomas Janousek 9bf3d5
  		{
Tomas Janousek 9bf3d5
  	          _rl_backspace (_rl_last_c_pos - tx);	/* XXX */
Tomas Janousek 9bf3d5
--- 1049,1053 ----
Tomas Janousek 9bf3d5
  	      else
Tomas Janousek 9bf3d5
  		tx = nleft;
Tomas Janousek 9bf3d5
! 	      if (tx >= 0 && _rl_last_c_pos > tx)
Tomas Janousek 9bf3d5
  		{
Tomas Janousek 9bf3d5
  	          _rl_backspace (_rl_last_c_pos - tx);	/* XXX */
Tomas Janousek 9bf3d5
***************
Tomas Janousek 9bf3d5
*** 1205,1209 ****
Tomas Janousek 9bf3d5
  {
Tomas Janousek 9bf3d5
    register char *ofd, *ols, *oe, *nfd, *nls, *ne;
Tomas Janousek 9bf3d5
!   int temp, lendiff, wsatend, od, nd;
Tomas Janousek 9bf3d5
    int current_invis_chars;
Tomas Janousek 9bf3d5
    int col_lendiff, col_temp;
Tomas Janousek 9bf3d5
--- 1205,1209 ----
Tomas Janousek 9bf3d5
  {
Tomas Janousek 9bf3d5
    register char *ofd, *ols, *oe, *nfd, *nls, *ne;
Tomas Janousek 9bf3d5
!   int temp, lendiff, wsatend, od, nd, o_cpos;
Tomas Janousek 9bf3d5
    int current_invis_chars;
Tomas Janousek 9bf3d5
    int col_lendiff, col_temp;
Tomas Janousek 9bf3d5
***************
Tomas Janousek 9bf3d5
*** 1466,1469 ****
Tomas Janousek 9bf3d5
--- 1466,1471 ----
Tomas Janousek 9bf3d5
      }
Tomas Janousek 9bf3d5
  
Tomas Janousek 9bf3d5
+   o_cpos = _rl_last_c_pos;
Tomas Janousek 9bf3d5
+ 
Tomas Janousek 9bf3d5
    /* When this function returns, _rl_last_c_pos is correct, and an absolute
Tomas Janousek 9bf3d5
       cursor postion in multibyte mode, but a buffer index when not in a
Tomas Janousek 9bf3d5
***************
Tomas Janousek 9bf3d5
*** 1475,1479 ****
Tomas Janousek 9bf3d5
       invisible characters in the prompt string.  Let's see if setting this when
Tomas Janousek 9bf3d5
       we make sure we're at the end of the drawn prompt string works. */
Tomas Janousek 9bf3d5
!   if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars)
Tomas Janousek 9bf3d5
      cpos_adjusted = 1;
Tomas Janousek 9bf3d5
  #endif
Tomas Janousek 9bf3d5
--- 1477,1483 ----
Tomas Janousek 9bf3d5
       invisible characters in the prompt string.  Let's see if setting this when
Tomas Janousek 9bf3d5
       we make sure we're at the end of the drawn prompt string works. */
Tomas Janousek 9bf3d5
!   if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && 
Tomas Janousek 9bf3d5
!       (_rl_last_c_pos > 0 || o_cpos > 0) &&
Tomas Janousek 9bf3d5
!       _rl_last_c_pos == prompt_physical_chars)
Tomas Janousek 9bf3d5
      cpos_adjusted = 1;
Tomas Janousek 9bf3d5
  #endif
Tomas Janousek 9bf3d5
*** ../bash-3.2/patchlevel.h	Thu Apr 13 08:31:04 2006
Tomas Janousek 9bf3d5
--- patchlevel.h	Mon Oct 16 14:22:54 2006
Tomas Janousek 9bf3d5
***************
Tomas Janousek 9bf3d5
*** 26,30 ****
Tomas Janousek 9bf3d5
     looks for to find the patch level (for the sccs version string). */
Tomas Janousek 9bf3d5
  
Tomas Janousek 9bf3d5
! #define PATCHLEVEL 26
Tomas Janousek 9bf3d5
  
Tomas Janousek 9bf3d5
  #endif /* _PATCHLEVEL_H_ */
Tomas Janousek 9bf3d5
--- 26,30 ----
Tomas Janousek 9bf3d5
     looks for to find the patch level (for the sccs version string). */
Tomas Janousek 9bf3d5
  
Tomas Janousek 9bf3d5
! #define PATCHLEVEL 27
Tomas Janousek 9bf3d5
  
Tomas Janousek 9bf3d5
  #endif /* _PATCHLEVEL_H_ */