READLINE PATCH REPORT
=====================
Readline-Release: 4.3
Patch-ID: readline43-003
Bug-Reported-by: Jim Meyering <
[email protected]>
Bug-Reference-ID: <
[email protected]>
Bug-Reference-URL:
http://mail.gnu.org/archive/html/bug-bash/2002-09/msg00047.html
Bug-Description:
When in a locale with multibyte characters, the readline display updater
will occasionally cause a segmentation fault when attempting to compute
the length of the first multibyte character on the line.
Patch:
*** ../readline-4.3/mbutil.c Tue Jun 4 11:54:29 2002
--- mbutil.c Mon Aug 5 11:20:39 2002
***************
*** 206,210 ****
{
/* shorted to compose multibyte char */
! memset (ps, 0, sizeof(mbstate_t));
return -2;
}
--- 206,211 ----
{
/* shorted to compose multibyte char */
! if (ps)
! memset (ps, 0, sizeof(mbstate_t));
return -2;
}
***************
*** 213,217 ****
/* invalid to compose multibyte char */
/* initialize the conversion state */
! memset (ps, 0, sizeof(mbstate_t));
return -1;
}
--- 214,219 ----
/* invalid to compose multibyte char */
/* initialize the conversion state */
! if (ps)
! memset (ps, 0, sizeof(mbstate_t));
return -1;
}
***************
*** 226,232 ****
int
_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
! char *buf1, *buf2;
! mbstate_t *ps1, *ps2;
! int pos1, pos2;
{
int i, w1, w2;
--- 228,237 ----
int
_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
! char *buf1;
! int pos1;
! mbstate_t *ps1;
! char *buf2;
! int pos2;
! mbstate_t *ps2;
{
int i, w1, w2;
***************
*** 277,282 ****
/* clear the state of the byte sequence, because
in this case effect of mbstate is undefined */
! memset (ps, 0, sizeof (mbstate_t));
}
else
pos += tmp;
--- 282,290 ----
/* clear the state of the byte sequence, because
in this case effect of mbstate is undefined */
! if (ps)
! memset (ps, 0, sizeof (mbstate_t));
}
+ else if (tmp == 0)
+ pos++;
else
pos += tmp;