pkgsrc-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[pkgsrc/trunk]: pkgsrc/devel/readline Update from version 5.2nb1 to 5.2nb2.



details:   https://anonhg.NetBSD.org/pkgsrc/rev/19befe2058d5
branches:  trunk
changeset: 545812:19befe2058d5
user:      he <he%pkgsrc.org@localhost>
date:      Wed Aug 13 11:11:38 2008 +0000

description:
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:

 devel/readline/Makefile         |    4 +-
 devel/readline/distinfo         |    5 +-
 devel/readline/patches/patch-af |  124 ++++++++++++++++++++++++++++++++++++++++
 devel/readline/patches/patch-ag |   12 +++
 devel/readline/patches/patch-ah |   12 +++
 5 files changed, 154 insertions(+), 3 deletions(-)

diffs (188 lines):

diff -r 454269ac8a94 -r 19befe2058d5 devel/readline/Makefile
--- a/devel/readline/Makefile   Wed Aug 13 09:12:58 2008 +0000
+++ b/devel/readline/Makefile   Wed Aug 13 11:11:38 2008 +0000
@@ -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 -r 454269ac8a94 -r 19befe2058d5 devel/readline/distinfo
--- a/devel/readline/distinfo   Wed Aug 13 09:12:58 2008 +0000
+++ b/devel/readline/distinfo   Wed Aug 13 11:11:38 2008 +0000
@@ -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 -r 454269ac8a94 -r 19befe2058d5 devel/readline/patches/patch-af
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/readline/patches/patch-af   Wed Aug 13 11:11:38 2008 +0000
@@ -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 -r 454269ac8a94 -r 19befe2058d5 devel/readline/patches/patch-ag
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/readline/patches/patch-ag   Wed Aug 13 11:11:38 2008 +0000
@@ -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 -r 454269ac8a94 -r 19befe2058d5 devel/readline/patches/patch-ah
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/devel/readline/patches/patch-ah   Wed Aug 13 11:11:38 2008 +0000
@@ -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>



Home | Main Index | Thread Index | Old Index