]>
Commit | Line | Data |
---|---|---|
4e9fe84f JB |
1 | BASH PATCH REPORT |
2 | ================= | |
3 | ||
4 | Bash-Release: 3.0 | |
5 | Patch-ID: bash30-009 | |
6 | ||
7 | Bug-Reported-by: Tim Waugh <twaugh@redhat.com> | |
8 | Bug-Reference-ID: <20040810083805.GT2177@redhat.com> | |
9 | Bug-Reference-URL: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=129526b | |
10 | http://lists.gnu.org/archive/html/bug-bash/2004-08/msg00116.html | |
11 | ||
12 | Bug-Description: | |
13 | ||
14 | --> | |
15 | Steps to Reproduce: | |
16 | 1. Launch a bash shell | |
17 | 2. Set editing mode to 'vi' with 'set -o vi' | |
18 | 3. Type any command, but don't hit return | |
19 | 4. Enter vi-command mode by hitting the escape key | |
20 | 5. Go to the end of line with the '$' command | |
21 | 6. Type 'r' to change the last character | |
22 | 7. Type any character (other than what the character already is) | |
23 | ||
24 | The last two characters are inexplicably swapped | |
25 | after the last character is changed. | |
26 | <-- | |
27 | ||
28 | Patch: | |
29 | ||
30 | *** ../bash-3.0/lib/readline/vi_mode.c Tue Jul 13 14:08:27 2004 | |
31 | --- lib/readline/vi_mode.c Tue Aug 17 00:12:09 2004 | |
32 | *************** | |
33 | *** 691,695 **** | |
34 | wchar_t wc; | |
35 | char mb[MB_LEN_MAX+1]; | |
36 | ! int mblen; | |
37 | mbstate_t ps; | |
38 | ||
39 | --- 693,697 ---- | |
40 | wchar_t wc; | |
41 | char mb[MB_LEN_MAX+1]; | |
42 | ! int mblen, p; | |
43 | mbstate_t ps; | |
44 | ||
45 | *************** | |
46 | *** 714,722 **** | |
47 | if (wc) | |
48 | { | |
49 | mblen = wcrtomb (mb, wc, &ps); | |
50 | if (mblen >= 0) | |
51 | mb[mblen] = '\0'; | |
52 | rl_begin_undo_group (); | |
53 | ! rl_delete (1, 0); | |
54 | rl_insert_text (mb); | |
55 | rl_end_undo_group (); | |
56 | --- 716,727 ---- | |
57 | if (wc) | |
58 | { | |
59 | + p = rl_point; | |
60 | mblen = wcrtomb (mb, wc, &ps); | |
61 | if (mblen >= 0) | |
62 | mb[mblen] = '\0'; | |
63 | rl_begin_undo_group (); | |
64 | ! rl_vi_delete (1, 0); | |
65 | ! if (rl_point < p) /* Did we retreat at EOL? */ | |
66 | ! rl_point++; /* XXX - should we advance more than 1 for mbchar? */ | |
67 | rl_insert_text (mb); | |
68 | rl_end_undo_group (); | |
69 | *************** | |
70 | *** 1311,1320 **** | |
71 | #if defined (HANDLE_MULTIBYTE) | |
72 | if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) | |
73 | ! while (_rl_insert_char (1, c)) | |
74 | ! { | |
75 | ! RL_SETSTATE (RL_STATE_MOREINPUT); | |
76 | ! c = rl_read_key (); | |
77 | ! RL_UNSETSTATE (RL_STATE_MOREINPUT); | |
78 | ! } | |
79 | else | |
80 | #endif | |
81 | --- 1316,1329 ---- | |
82 | #if defined (HANDLE_MULTIBYTE) | |
83 | if (MB_CUR_MAX > 1 && rl_byte_oriented == 0) | |
84 | ! { | |
85 | ! if (rl_point < p) /* Did we retreat at EOL? */ | |
86 | ! rl_point++; | |
87 | ! while (_rl_insert_char (1, c)) | |
88 | ! { | |
89 | ! RL_SETSTATE (RL_STATE_MOREINPUT); | |
90 | ! c = rl_read_key (); | |
91 | ! RL_UNSETSTATE (RL_STATE_MOREINPUT); | |
92 | ! } | |
93 | ! } | |
94 | else | |
95 | #endif | |
96 | ||
97 | *** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 | |
98 | --- patchlevel.h Thu Sep 2 15:04:32 2004 | |
99 | *************** | |
100 | *** 26,30 **** | |
101 | looks for to find the patch level (for the sccs version string). */ | |
102 | ||
103 | ! #define PATCHLEVEL 8 | |
104 | ||
105 | #endif /* _PATCHLEVEL_H_ */ | |
106 | --- 26,30 ---- | |
107 | looks for to find the patch level (for the sccs version string). */ | |
108 | ||
109 | ! #define PATCHLEVEL 9 | |
110 | ||
111 | #endif /* _PATCHLEVEL_H_ */ |