diff options
author | he <he@pkgsrc.org> | 2008-08-13 11:11:38 +0000 |
---|---|---|
committer | he <he@pkgsrc.org> | 2008-08-13 11:11:38 +0000 |
commit | 0ddfe907f8598526686f34c71f8d560fcaab073e (patch) | |
tree | 5e641b3b2752d358941ad77f8d02016cb859c17f /devel/readline | |
parent | 4cbe6d74002e417deec29078af66a982753f1f11 (diff) | |
download | pkgsrc-0ddfe907f8598526686f34c71f8d560fcaab073e.tar.gz |
Update from version 5.2nb1 to 5.2nb2.
This imports some fixes from Debian. First and foremost:
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.
...all related to display.c. Also add include of <stdio.h> to
two of the readline header files.
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> |