some more patches from upstream
authorMike Frysinger <vapier@gentoo.org>
Thu, 23 Mar 2006 03:04:47 +0000 (03:04 -0000)
committerMike Frysinger <vapier@gentoo.org>
Thu, 23 Mar 2006 03:04:47 +0000 (03:04 -0000)
package/readline/readline51-004 [new file with mode: 0644]

diff --git a/package/readline/readline51-004 b/package/readline/readline51-004
new file mode 100644 (file)
index 0000000..2bdba2b
--- /dev/null
@@ -0,0 +1,90 @@
+                          READLINE PATCH REPORT
+                          =====================
+
+Readline-Release: 5.1
+Patch-ID: readline51-004
+
+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:
+
+*** readline-5.1-patched/display.c     Wed Nov 30 14:05:02 2005
+--- readline-5.1/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;
+  }
+