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