READLINE PATCH REPORT ===================== Readline-Release: 4.3 Patch-ID: readline43-003 Bug-Reported-by: Jim Meyering Bug-Reference-ID: <87bs6v8iib.fsf@pixie.eng.ascend.com> 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;