diff options
Diffstat (limited to 'devel/readline')
-rw-r--r-- | devel/readline/Makefile | 4 | ||||
-rw-r--r-- | devel/readline/distinfo | 5 | ||||
-rw-r--r-- | devel/readline/patches/patch-af | 124 | ||||
-rw-r--r-- | devel/readline/patches/patch-ag | 12 | ||||
-rw-r--r-- | devel/readline/patches/patch-ah | 12 |
5 files changed, 154 insertions, 3 deletions
diff --git a/devel/readline/Makefile b/devel/readline/Makefile index dbd28dc81ac..ecc309672dc 100644 --- a/devel/readline/Makefile +++ b/devel/readline/Makefile @@ -1,8 +1,8 @@ -# $NetBSD: Makefile,v 1.45 2008/03/02 07:07:43 jlam Exp $ +# $NetBSD: Makefile,v 1.46 2008/08/13 11:11:38 he Exp $ # DISTNAME= readline-5.2 -PKGREVISION= 1 +PKGREVISION= 2 CATEGORIES= devel MASTER_SITES= ${MASTER_SITE_GNU:=readline/} diff --git a/devel/readline/distinfo b/devel/readline/distinfo index 2257d932bf0..2716356a582 100644 --- a/devel/readline/distinfo +++ b/devel/readline/distinfo @@ -1,6 +1,9 @@ -$NetBSD: distinfo,v 1.14 2007/11/21 23:33:13 minskim Exp $ +$NetBSD: distinfo,v 1.15 2008/08/13 11:11:38 he Exp $ SHA1 (readline-5.2.tar.gz) = 18f3412c73068509d5f491b7b4535aeaf9522834 RMD160 (readline-5.2.tar.gz) = 983cbb25192e0a376b80cb2428fe8ee254a041c7 Size (readline-5.2.tar.gz) = 2037705 bytes SHA1 (patch-ae) = b68716ae29eeb101c34d69dd274dbd846689a794 +SHA1 (patch-af) = 0b18362412b4bbe0ea3a821fec59129f6a8f7f50 +SHA1 (patch-ag) = 3114e6959dfff3e2aae74c3df3ba4b0f692b79bb +SHA1 (patch-ah) = 107701a092b4294907e9a2066cfa7cbb3afad301 diff --git a/devel/readline/patches/patch-af b/devel/readline/patches/patch-af new file mode 100644 index 00000000000..cc33a10b9d2 --- /dev/null +++ b/devel/readline/patches/patch-af @@ -0,0 +1,124 @@ +$NetBSD: patch-af,v 1.4 2008/08/13 11:11:38 he Exp $ + +3 patches from Debian rolled into one: + +http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html + +Bug-Description: + +In some cases, code that is intended to be used in the presence of multibyte +characters is called when no such characters are present, leading to incorrect +display position calculations and incorrect redisplay. + +http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html + +Bug-Description: + +Readline neglects to reallocate the array it uses to keep track of wrapped +screen lines when increasing its size. This will eventually result in +segmentation faults when given sufficiently long input. + +http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html + +Bug-Description: + +When moving the cursor, bash sometimes misplaces the cursor when the prompt +contains two or more multibyte characters. The particular circumstance that +uncovered the problem was having the (multibyte) current directory name in +the prompt string. + + +--- display.c.orig 2006-09-14 20:20:12.000000000 +0200 ++++ display.c +@@ -561,14 +561,25 @@ rl_redisplay () + wrap_offset = prompt_invis_chars_first_line = 0; + } + ++#if defined (HANDLE_MULTIBYTE) + #define CHECK_INV_LBREAKS() \ + do { \ + if (newlines >= (inv_lbsize - 2)) \ + { \ + inv_lbsize *= 2; \ + inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ ++ _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \ ++ } \ ++ } while (0) ++#else ++ do { \ ++ if (newlines >= (inv_lbsize - 2)) \ ++ { \ ++ inv_lbsize *= 2; \ ++ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \ + } \ + } while (0) ++#endif /* HANDLE_MULTIBYTE */ + + #if defined (HANDLE_MULTIBYTE) + #define CHECK_LPOS() \ +@@ -1586,8 +1597,22 @@ update_line (old, new, current_line, oma + temp = nls - nfd; + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); +- _rl_last_c_pos += _rl_col_width (nfd, 0, temp);; ++ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ++ { ++ _rl_last_c_pos += _rl_col_width (nfd, 0, temp); ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ } ++ else ++ _rl_last_c_pos += temp; + } + } + /* Otherwise, print over the existing material. */ +@@ -1595,8 +1620,20 @@ update_line (old, new, current_line, oma + { + if (temp > 0) + { ++ /* If nfd begins at the prompt, or before the invisible ++ characters in the prompt, we need to adjust _rl_last_c_pos ++ in a multibyte locale to account for the wrap offset and ++ set cpos_adjusted accordingly. */ + _rl_output_some_chars (nfd, temp); + _rl_last_c_pos += col_temp; /* XXX */ ++ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) ++ { ++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible)) ++ { ++ _rl_last_c_pos -= wrap_offset; ++ cpos_adjusted = 1; ++ } ++ } + } + lendiff = (oe - old) - (ne - new); + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) +@@ -1732,7 +1769,10 @@ _rl_move_cursor_relative (new, data) + if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) + { + dpos = _rl_col_width (data, 0, new); +- if (dpos > prompt_last_invisible) /* XXX - don't use woff here */ ++ /* Use NEW when comparing against the last invisible character in the ++ prompt string, since they're both buffer indices and DPOS is a ++ desired display position. */ ++ if (new > prompt_last_invisible) /* XXX - don't use woff here */ + { + dpos -= woff; + /* Since this will be assigned to _rl_last_c_pos at the end (more +@@ -2380,6 +2420,8 @@ _rl_col_width (str, start, end) + + if (end <= start) + return 0; ++ if (MB_CUR_MAX == 1) ++ return end - start; + + memset (&ps, 0, sizeof (mbstate_t)); + diff --git a/devel/readline/patches/patch-ag b/devel/readline/patches/patch-ag new file mode 100644 index 00000000000..5298f296acd --- /dev/null +++ b/devel/readline/patches/patch-ag @@ -0,0 +1,12 @@ +$NetBSD: patch-ag,v 1.4 2008/08/13 11:11:38 he Exp $ + +--- history.h.orig 2003-07-31 14:38:44.000000000 +0200 ++++ history.h +@@ -32,6 +32,7 @@ extern "C" { + # include "rlstdc.h" + # include "rltypedefs.h" + #else ++# include <stdio.h> + # include <readline/rlstdc.h> + # include <readline/rltypedefs.h> + #endif diff --git a/devel/readline/patches/patch-ah b/devel/readline/patches/patch-ah new file mode 100644 index 00000000000..11a64b5fc2b --- /dev/null +++ b/devel/readline/patches/patch-ah @@ -0,0 +1,12 @@ +$NetBSD: patch-ah,v 1.4 2008/08/13 11:11:38 he Exp $ + +--- readline.h.orig 2006-08-16 21:16:59.000000000 +0200 ++++ readline.h +@@ -33,6 +33,7 @@ extern "C" { + # include "keymaps.h" + # include "tilde.h" + #else ++# include <stdio.h> + # include <readline/rlstdc.h> + # include <readline/rltypedefs.h> + # include <readline/keymaps.h> |