diff options
Diffstat (limited to 'package/bash/bash31-014')
| -rw-r--r-- | package/bash/bash31-014 | 105 | 
1 files changed, 105 insertions, 0 deletions
| diff --git a/package/bash/bash31-014 b/package/bash/bash31-014 new file mode 100644 index 000000000..9ca7db5b9 --- /dev/null +++ b/package/bash/bash31-014 @@ -0,0 +1,105 @@ +			     BASH PATCH REPORT +			     ================= + +Bash-Release: 3.1 +Patch-ID: bash31-014 + +Bug-Reported-by: Mike Stroyan <mike.stroyan@hp.com> +Bug-Reference-ID: <20060203191607.GC27614@localhost> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-02/msg00004.html + +Bug-Description: + +The displayed search prompt is corrupted when using non-incremental +searches in vi and emacs mode if the prompt contains non-printing +characters or spans multiple lines.  The prompt is expanded more than +once; the second time without the escape sequences that protect non- +printing characters from the length calculations. + +Patch: + +*** bash-3.1-patched/lib/readline/display.c	Wed Nov 30 14:05:02 2005 +--- bash-3.1/lib/readline/display.c	Sat Feb 18 12:14:58 2006 +*************** +*** 1983,1993 **** +       int pchar; +  { +    int len; +!   char *pmt; +   +    rl_save_prompt (); +   +!   if (saved_local_prompt == 0) +      { +        len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0; +        pmt = (char *)xmalloc (len + 2); +--- 1998,2012 ---- +       int pchar; +  { +    int len; +!   char *pmt, *p; +   +    rl_save_prompt (); +   +!   /* We've saved the prompt, and can do anything with the various prompt +!      strings we need before they're restored.  We want the unexpanded +!      portion of the prompt string after any final newline. */ +!   p = rl_prompt ? strrchr (rl_prompt, '\n') : 0; +!   if (p == 0) +      { +        len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0; +        pmt = (char *)xmalloc (len + 2); +*************** +*** 1998,2016 **** +      } +    else +      { +!       len = *saved_local_prompt ? strlen (saved_local_prompt) : 0; +        pmt = (char *)xmalloc (len + 2); +        if (len) +! 	strcpy (pmt, saved_local_prompt); +        pmt[len] = pchar; +        pmt[len+1] = '\0'; +!       local_prompt = savestring (pmt); +!       prompt_last_invisible = saved_last_invisible; +!       prompt_visible_length = saved_visible_length + 1; +!     } +   +    prompt_physical_chars = saved_physical_chars + 1; +-  +    return pmt; +  } +   +--- 2017,2033 ---- +      } +    else +      { +!       p++; +!       len = strlen (p); +        pmt = (char *)xmalloc (len + 2); +        if (len) +! 	strcpy (pmt, p); +        pmt[len] = pchar; +        pmt[len+1] = '\0'; +!     }   +   ++   /* will be overwritten by expand_prompt, called from rl_message */ +    prompt_physical_chars = saved_physical_chars + 1; +    return pmt; +  } +   +*** bash-3.1/patchlevel.h	Wed Jul 20 13:58:20 2005 +--- bash-3.1/patchlevel.h	Wed Dec  7 13:48:42 2005 +*************** +*** 26,30 **** +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 13 +   +  #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- +     looks for to find the patch level (for the sccs version string). */ +   +! #define PATCHLEVEL 14 +   +  #endif /* _PATCHLEVEL_H_ */ | 
