author | Danek Duvall <danek.duvall@oracle.com> |
Thu, 07 Apr 2011 16:25:07 -0700 | |
changeset 198 | 172fc01ce997 |
permissions | -rw-r--r-- |
198
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
1 |
To: [email protected] |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
2 |
Subject: Patch 7.2.312 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
3 |
Fcc: outbox |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
4 |
From: Bram Moolenaar <[email protected]> |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
5 |
Mime-Version: 1.0 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
6 |
Content-Type: text/plain; charset=UTF-8 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
7 |
Content-Transfer-Encoding: 8bit |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
8 |
------------ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
9 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
10 |
Patch 7.2.312 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
11 |
Problem: iconv() returns an invalid character sequence when conversion |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
12 |
fails. It should return an empty string. (Yongwei Wu) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
13 |
Solution: Be more strict about invalid characters in the input. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
14 |
Files: src/mbyte.c |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
15 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
16 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
17 |
*** ../vim-7.2.311/src/mbyte.c 2009-06-16 15:23:07.000000000 +0200 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
18 |
--- src/mbyte.c 2009-11-25 16:10:44.000000000 +0100 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
19 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
20 |
*** 133,154 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
21 |
static int dbcs_ptr2cells_len __ARGS((char_u *p, int size)); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
22 |
static int dbcs_ptr2char __ARGS((char_u *p)); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
23 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
24 |
! /* Lookup table to quickly get the length in bytes of a UTF-8 character from |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
25 |
! * the first byte of a UTF-8 string. Bytes which are illegal when used as the |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
26 |
! * first byte have a one, because these will be used separately. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
27 |
static char utf8len_tab[256] = |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
28 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
29 |
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
30 |
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
31 |
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
32 |
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
33 |
! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /*bogus*/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
34 |
! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /*bogus*/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
35 |
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
36 |
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
37 |
}; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
38 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
39 |
/* |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
40 |
* XIM often causes trouble. Define XIM_DEBUG to get a log of XIM callbacks |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
41 |
* in the "xim.log" file. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
42 |
*/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
43 |
--- 133,172 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
44 |
static int dbcs_ptr2cells_len __ARGS((char_u *p, int size)); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
45 |
static int dbcs_ptr2char __ARGS((char_u *p)); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
46 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
47 |
! /* |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
48 |
! * Lookup table to quickly get the length in bytes of a UTF-8 character from |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
49 |
! * the first byte of a UTF-8 string. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
50 |
! * Bytes which are illegal when used as the first byte have a 1. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
51 |
! * The NUL byte has length 1. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
52 |
! */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
53 |
static char utf8len_tab[256] = |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
54 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
55 |
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
56 |
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
57 |
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
58 |
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
59 |
! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
60 |
! 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
61 |
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
62 |
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
63 |
}; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
64 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
65 |
/* |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
66 |
+ * Like utf8len_tab above, but using a zero for illegal lead bytes. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
67 |
+ */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
68 |
+ static char utf8len_tab_zero[256] = |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
69 |
+ { |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
70 |
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
71 |
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
72 |
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
73 |
+ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
74 |
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
75 |
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
76 |
+ 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
77 |
+ 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,0,0, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
78 |
+ }; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
79 |
+ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
80 |
+ /* |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
81 |
* XIM often causes trouble. Define XIM_DEBUG to get a log of XIM callbacks |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
82 |
* in the "xim.log" file. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
83 |
*/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
84 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
85 |
*** 1352,1358 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
86 |
if (size > 0 && *p >= 0x80) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
87 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
88 |
if (utf_ptr2len_len(p, size) < utf8len_tab[*p]) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
89 |
! return 1; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
90 |
c = utf_ptr2char(p); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
91 |
/* An illegal byte is displayed as <xx>. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
92 |
if (utf_ptr2len(p) == 1 || c == NUL) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
93 |
--- 1370,1376 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
94 |
if (size > 0 && *p >= 0x80) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
95 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
96 |
if (utf_ptr2len_len(p, size) < utf8len_tab[*p]) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
97 |
! return 1; /* truncated */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
98 |
c = utf_ptr2char(p); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
99 |
/* An illegal byte is displayed as <xx>. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
100 |
if (utf_ptr2len(p) == 1 || c == NUL) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
101 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
102 |
*** 1473,1479 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
103 |
if (p[0] < 0x80) /* be quick for ASCII */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
104 |
return p[0]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
105 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
106 |
! len = utf8len_tab[p[0]]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
107 |
if (len > 1 && (p[1] & 0xc0) == 0x80) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
108 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
109 |
if (len == 2) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
110 |
--- 1491,1497 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
111 |
if (p[0] < 0x80) /* be quick for ASCII */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
112 |
return p[0]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
113 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
114 |
! len = utf8len_tab_zero[p[0]]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
115 |
if (len > 1 && (p[1] & 0xc0) == 0x80) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
116 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
117 |
if (len == 2) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
118 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
119 |
*** 1723,1728 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
120 |
--- 1741,1747 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
121 |
/* |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
122 |
* Return length of UTF-8 character, obtained from the first byte. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
123 |
* "b" must be between 0 and 255! |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
124 |
+ * Returns 1 for an invalid first byte value. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
125 |
*/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
126 |
int |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
127 |
utf_byte2len(b) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
128 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
129 |
*** 1737,1742 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
130 |
--- 1756,1762 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
131 |
* Returns 1 for "". |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
132 |
* Returns 1 for an illegal byte sequence (also in incomplete byte seq.). |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
133 |
* Returns number > "size" for an incomplete byte sequence. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
134 |
+ * Never returns zero. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
135 |
*/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
136 |
int |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
137 |
utf_ptr2len_len(p, size) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
138 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
139 |
*** 1747,1757 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
140 |
int i; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
141 |
int m; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
142 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
143 |
! if (*p == NUL) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
144 |
! return 1; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
145 |
! m = len = utf8len_tab[*p]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
146 |
if (len > size) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
147 |
m = size; /* incomplete byte sequence. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
148 |
for (i = 1; i < m; ++i) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
149 |
if ((p[i] & 0xc0) != 0x80) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
150 |
return 1; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
151 |
--- 1767,1779 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
152 |
int i; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
153 |
int m; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
154 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
155 |
! len = utf8len_tab[*p]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
156 |
! if (len == 1) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
157 |
! return 1; /* NUL, ascii or illegal lead byte */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
158 |
if (len > size) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
159 |
m = size; /* incomplete byte sequence. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
160 |
+ else |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
161 |
+ m = len; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
162 |
for (i = 1; i < m; ++i) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
163 |
if ((p[i] & 0xc0) != 0x80) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
164 |
return 1; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
165 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
166 |
*** 2505,2510 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
167 |
--- 2527,2533 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
168 |
/* |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
169 |
* mb_head_off() function pointer. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
170 |
* Return offset from "p" to the first byte of the character it points into. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
171 |
+ * If "p" points to the NUL at the end of the string return 0. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
172 |
* Returns 0 when already at the first byte of a character. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
173 |
*/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
174 |
int |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
175 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
176 |
*** 2524,2530 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
177 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
178 |
/* It can't be a trailing byte when not using DBCS, at the start of the |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
179 |
* string or the previous byte can't start a double-byte. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
180 |
! if (p <= base || MB_BYTE2LEN(p[-1]) == 1) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
181 |
return 0; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
182 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
183 |
/* This is slow: need to start at the base and go forward until the |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
184 |
--- 2547,2553 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
185 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
186 |
/* It can't be a trailing byte when not using DBCS, at the start of the |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
187 |
* string or the previous byte can't start a double-byte. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
188 |
! if (p <= base || MB_BYTE2LEN(p[-1]) == 1 || *p == NUL) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
189 |
return 0; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
190 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
191 |
/* This is slow: need to start at the base and go forward until the |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
192 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
193 |
*** 2552,2558 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
194 |
* lead byte in the current cell. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
195 |
if (p <= base |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
196 |
|| (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
197 |
! || MB_BYTE2LEN(p[-1]) == 1) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
198 |
return 0; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
199 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
200 |
/* This is slow: need to start at the base and go forward until the |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
201 |
--- 2575,2582 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
202 |
* lead byte in the current cell. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
203 |
if (p <= base |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
204 |
|| (enc_dbcs == DBCS_JPNU && p[-1] == 0x8e) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
205 |
! || MB_BYTE2LEN(p[-1]) == 1 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
206 |
! || *p == NUL) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
207 |
return 0; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
208 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
209 |
/* This is slow: need to start at the base and go forward until the |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
210 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
211 |
*** 2578,2583 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
212 |
--- 2602,2608 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
213 |
char_u *q; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
214 |
char_u *s; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
215 |
int c; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
216 |
+ int len; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
217 |
#ifdef FEAT_ARABIC |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
218 |
char_u *j; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
219 |
#endif |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
220 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
221 |
*** 2597,2604 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
222 |
--q; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
223 |
/* Check for illegal sequence. Do allow an illegal byte after where we |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
224 |
* started. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
225 |
! if (utf8len_tab[*q] != (int)(s - q + 1) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
226 |
! && utf8len_tab[*q] != (int)(p - q + 1)) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
227 |
return 0; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
228 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
229 |
if (q <= base) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
230 |
--- 2622,2629 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
231 |
--q; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
232 |
/* Check for illegal sequence. Do allow an illegal byte after where we |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
233 |
* started. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
234 |
! len = utf8len_tab[*q]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
235 |
! if (len != (int)(s - q + 1) && len != (int)(p - q + 1)) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
236 |
return 0; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
237 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
238 |
if (q <= base) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
239 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
240 |
*** 2810,2818 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
241 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
242 |
while (end == NULL ? *p != NUL : p < end) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
243 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
244 |
! if ((*p & 0xc0) == 0x80) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
245 |
return FALSE; /* invalid lead byte */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
246 |
- l = utf8len_tab[*p]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
247 |
if (end != NULL && p + l > end) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
248 |
return FALSE; /* incomplete byte sequence */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
249 |
++p; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
250 |
--- 2835,2843 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
251 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
252 |
while (end == NULL ? *p != NUL : p < end) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
253 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
254 |
! l = utf8len_tab_zero[*p]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
255 |
! if (l == 0) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
256 |
return FALSE; /* invalid lead byte */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
257 |
if (end != NULL && p + l > end) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
258 |
return FALSE; /* incomplete byte sequence */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
259 |
++p; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
260 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
261 |
*** 6117,6128 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
262 |
d = retval; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
263 |
for (i = 0; i < len; ++i) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
264 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
265 |
! l = utf_ptr2len(ptr + i); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
266 |
if (l == 0) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
267 |
*d++ = NUL; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
268 |
else if (l == 1) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
269 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
270 |
! if (unconvlenp != NULL && utf8len_tab[ptr[i]] > len - i) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
271 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
272 |
/* Incomplete sequence at the end. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
273 |
*unconvlenp = len - i; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
274 |
--- 6142,6161 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
275 |
d = retval; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
276 |
for (i = 0; i < len; ++i) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
277 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
278 |
! l = utf_ptr2len_len(ptr + i, len - i); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
279 |
if (l == 0) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
280 |
*d++ = NUL; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
281 |
else if (l == 1) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
282 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
283 |
! int l_w = utf8len_tab_zero[ptr[i]]; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
284 |
! |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
285 |
! if (l_w == 0) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
286 |
! { |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
287 |
! /* Illegal utf-8 byte cannot be converted */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
288 |
! vim_free(retval); |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
289 |
! return NULL; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
290 |
! } |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
291 |
! if (unconvlenp != NULL && l_w > len - i) |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
292 |
{ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
293 |
/* Incomplete sequence at the end. */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
294 |
*unconvlenp = len - i; |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
295 |
*** ../vim-7.2.311/src/version.c 2009-12-02 13:32:10.000000000 +0100 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
296 |
--- src/version.c 2009-12-02 15:00:23.000000000 +0100 |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
297 |
*************** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
298 |
*** 683,684 **** |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
299 |
--- 683,686 ---- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
300 |
{ /* Add new patch number below this line */ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
301 |
+ /**/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
302 |
+ 312, |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
303 |
/**/ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
304 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
305 |
-- |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
306 |
hundred-and-one symptoms of being an internet addict: |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
307 |
6. You refuse to go to a vacation spot with no electricity and no phone lines. |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
308 |
|
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
309 |
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
310 |
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
311 |
\\\ download, build and distribute -- http://www.A-A-P.org /// |
172fc01ce997
7016732 move vim from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff
changeset
|
312 |
\\\ help me help AIDS victims -- http://ICCF-Holland.org /// |