]>
Commit | Line | Data |
---|---|---|
4e9fe84f JB |
1 | BASH PATCH REPORT |
2 | ================= | |
3 | ||
4 | Bash-Release: 3.0 | |
5 | Patch-ID: bash30-011 | |
6 | ||
7 | Bug-Reported-by: Egmont Koblinger <egmont@uhulinux.hu> | |
8 | Bug-Reference-ID: <Pine.LNX.4.58L0.0407282151140.8088@sziami.cs.bme.hu> | |
9 | Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2004-07/msg00277.html | |
10 | ||
11 | Bug-Description: | |
12 | ||
13 | I've just upgraded to readline 5.0 and bash 3.0 and tried them with UTF-8 | |
14 | encoding. I found line editing to be quite buggy: | |
15 | ||
16 | I type an accented letter, let's say <E1>. Then <E1> appears. I press the left | |
17 | arrow, the cursor goes back, it is now over <E1>. I press <E9>. Now <E9><E1> is | |
18 | visible, which is correct, but the cursor is past the two letters, though | |
19 | it should be over <E1>. Here only the first Left arrow takes affect, moves | |
20 | the cursor over <E1>, but the 2nd time I press Left, it just beeps, doesn't | |
21 | move to the first char (<E9>). Now a Right arrow doesn't move the cursor, but | |
22 | causes further Left and Right arrows to work as expected. To go on, | |
23 | similar bug occurs nearly every time that I insert an accented letter | |
24 | before or amongs other ones (but not at the end of the line). When the | |
25 | command line has about ten or twenty accented letters (and no or hardly | |
26 | any non-accented ones), line editing becomes a total chaos, where | |
27 | sometimes inserting another accented letter causes the cursor to jump many | |
28 | characters to the right, and pressing the Left arrow sometimes causes the | |
29 | cursor to jump back lots of characters at once. | |
30 | ||
31 | Patch: | |
32 | ||
33 | *** ../bash-3.0/lib/readline/mbutil.c Wed Jan 14 09:44:52 2004 | |
34 | --- lib/readline/mbutil.c Wed Aug 18 22:25:57 2004 | |
35 | *************** | |
36 | *** 127,135 **** | |
37 | { | |
38 | tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); | |
39 | ! while (wcwidth (wc) == 0) | |
40 | { | |
41 | point += tmp; | |
42 | tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); | |
43 | ! if (tmp == (size_t)(0) || tmp == (size_t)(-1) || tmp == (size_t)(-2)) | |
44 | break; | |
45 | } | |
46 | --- 127,135 ---- | |
47 | { | |
48 | tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); | |
49 | ! while (tmp > 0 && wcwidth (wc) == 0) | |
50 | { | |
51 | point += tmp; | |
52 | tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps); | |
53 | ! if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp)) | |
54 | break; | |
55 | } | |
56 | ||
57 | *** ../bash-3.0/patchlevel.h Wed Aug 22 08:05:39 2001 | |
58 | --- patchlevel.h Thu Sep 2 15:04:32 2004 | |
59 | *************** | |
60 | *** 26,30 **** | |
61 | looks for to find the patch level (for the sccs version string). */ | |
62 | ||
63 | ! #define PATCHLEVEL 10 | |
64 | ||
65 | #endif /* _PATCHLEVEL_H_ */ | |
66 | --- 26,30 ---- | |
67 | looks for to find the patch level (for the sccs version string). */ | |
68 | ||
69 | ! #define PATCHLEVEL 11 | |
70 | ||
71 | #endif /* _PATCHLEVEL_H_ */ |