diff options
author | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2004-01-27 22:25:15 +0000 |
---|---|---|
committer | Elena Zannoni <ezannoni@kwikemart.cygnus.com> | 2004-01-27 22:25:15 +0000 |
commit | 5af408ce2fd423dc9a9f8c91576a6a9dc52e16a1 (patch) | |
tree | 41d3d25bc81d867cc6cd88f6390466da39559ca2 /readline/vi_mode.c | |
parent | e142c38c7126bcca9411b6a73e5d803860b224af (diff) | |
download | gdb-5af408ce2fd423dc9a9f8c91576a6a9dc52e16a1.zip gdb-5af408ce2fd423dc9a9f8c91576a6a9dc52e16a1.tar.gz gdb-5af408ce2fd423dc9a9f8c91576a6a9dc52e16a1.tar.bz2 |
2004-01-27 Elena Zannoni <ezannoni@redhat.com>
Merge in official patches to readline-4.3 from
ftp://ftp.cwru.edu/pub/bash/readline-4.3-patches:
NOTE: Patch-ID readline-43-004 was already applied (see below).
* bind.c (rl_generic_bind): Pressing certain key sequences
causes an infinite loop in _rl_dispatch_subseq with the `key' argument
set to 256. This eventually causes bash to exceed the stack size
limit and crash with a segmentation violation.
Patch-ID: readline43-001.
* readline.c (_rl_dispatch_subseq): Repeating an edit in
vi-mode with `.' does not work.
Patch-ID: readline43-002.
* mbutil.c (_rl_get_char_len, _rl_compare_chars,
_rl_adjust_point): 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-ID: readline43-003.
* vi_mode.c (_rl_vi_change_mbchar_case): Using the vi editing
mode's case-changing commands in a locale with multibyte characters
will cause garbage characters to be inserted into the editing buffer.
Patch-ID: readline43-005.
Diffstat (limited to 'readline/vi_mode.c')
-rw-r--r-- | readline/vi_mode.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/readline/vi_mode.c b/readline/vi_mode.c index 5d146b3f..8930364 100644 --- a/readline/vi_mode.c +++ b/readline/vi_mode.c @@ -680,7 +680,8 @@ _rl_vi_change_mbchar_case (count) int count; { wchar_t wc; - char mb[MB_LEN_MAX]; + char mb[MB_LEN_MAX+1]; + int mblen; mbstate_t ps; memset (&ps, 0, sizeof (mbstate_t)); @@ -703,7 +704,9 @@ _rl_vi_change_mbchar_case (count) /* Vi is kind of strange here. */ if (wc) { - wctomb (mb, wc); + mblen = wctomb (mb, wc); + if (mblen >= 0) + mb[mblen] = '\0'; rl_begin_undo_group (); rl_delete (1, 0); rl_insert_text (mb); |