@@ -14,6 +14,7 @@ void goodTest0()
14
14
len = 9 ;
15
15
for (wchar_t wc; (ret = mbtowc (&wc, ptr, len)) > 0 ; len-=ret) { // GOOD
16
16
wprintf (L" %lc" , wc);
17
+ ptr += ret;
17
18
}
18
19
}
19
20
void goodTest1 (const char * ptr)
@@ -23,6 +24,7 @@ void goodTest1(const char* ptr)
23
24
len = strlen (ptr);
24
25
for (wchar_t wc; (ret = mbtowc (&wc, ptr, len)) > 0 ; len-=ret) { // GOOD
25
26
wprintf (L" %lc" , wc);
27
+ ptr += ret;
26
28
}
27
29
}
28
30
void goodTest2 (char * ptr)
@@ -32,6 +34,7 @@ void goodTest2(char* ptr)
32
34
int len = 9 ;
33
35
for (wchar_t wc; (ret = mbtowc (&wc, ptr, 16 )) > 0 ; len-=ret) { // GOOD
34
36
wprintf (L" %lc" , wc);
37
+ ptr += ret;
35
38
}
36
39
}
37
40
@@ -42,6 +45,7 @@ void goodTest3(const char* ptr)
42
45
len = strlen (ptr);
43
46
for (wchar_t wc; (ret = mbtowc (&wc, ptr, MB_CUR_MAX)) > 0 ; len-=ret) { // GOOD
44
47
wprintf (L" %lc" , wc);
48
+ ptr += ret;
45
49
}
46
50
}
47
51
void goodTest4 (const char * ptr)
@@ -51,6 +55,7 @@ void goodTest4(const char* ptr)
51
55
len = strlen (ptr);
52
56
for (wchar_t wc; (ret = mbtowc (&wc, ptr, MB_LEN_MAX)) > 0 ; len-=ret) { // GOOD
53
57
wprintf (L" %lc" , wc);
58
+ ptr += ret;
54
59
}
55
60
}
56
61
void badTest1 (const char * ptr)
@@ -60,6 +65,7 @@ void badTest1(const char* ptr)
60
65
len = strlen (ptr);
61
66
for (wchar_t wc; (ret = mbtowc (&wc, ptr, 4 )) > 0 ; len-=ret) { // BAD:we can get unpredictable results
62
67
wprintf (L" %lc" , wc);
68
+ ptr += ret;
63
69
}
64
70
}
65
71
void badTest2 (const char * ptr)
@@ -69,6 +75,7 @@ void badTest2(const char* ptr)
69
75
len = strlen (ptr);
70
76
for (wchar_t wc; (ret = mbtowc (&wc, ptr, sizeof (wchar_t ))) > 0 ; len-=ret) { // BAD:we can get unpredictable results
71
77
wprintf (L" %lc" , wc);
78
+ ptr += ret;
72
79
}
73
80
}
74
81
@@ -89,11 +96,12 @@ void goodTest5(const char* ptr,wchar_t *wc,int wc_len)
89
96
}
90
97
}
91
98
92
- void badTest3 (const char * ptr,wchar_t *wc, int wc_len)
99
+ void badTest3 (const char * ptr,int wc_len)
93
100
{
94
101
int ret;
95
102
int len;
96
103
len = wc_len;
104
+ wchar_t *wc = new wchar_t [wc_len];
97
105
while (*ptr && len > 0 ) {
98
106
ret = mbtowc (wc, ptr, MB_CUR_MAX); // BAD
99
107
if (ret <0 )
@@ -105,11 +113,12 @@ void badTest3(const char* ptr,wchar_t *wc,int wc_len)
105
113
wc++;
106
114
}
107
115
}
108
- void badTest4 (const char * ptr,wchar_t *wc, int wc_len)
116
+ void badTest4 (const char * ptr,int wc_len)
109
117
{
110
118
int ret;
111
119
int len;
112
120
len = wc_len;
121
+ wchar_t *wc = new wchar_t [wc_len];
113
122
while (*ptr && len > 0 ) {
114
123
ret = mbtowc (wc, ptr, 16 ); // BAD
115
124
if (ret <0 )
@@ -121,11 +130,12 @@ void badTest4(const char* ptr,wchar_t *wc,int wc_len)
121
130
wc++;
122
131
}
123
132
}
124
- void badTest5 (const char * ptr,wchar_t *wc, int wc_len)
133
+ void badTest5 (const char * ptr,int wc_len)
125
134
{
126
135
int ret;
127
136
int len;
128
137
len = wc_len;
138
+ wchar_t *wc = new wchar_t [wc_len];
129
139
while (*ptr && len > 0 ) {
130
140
ret = mbtowc (wc, ptr, sizeof (wchar_t )); // BAD
131
141
if (ret <0 )
@@ -138,11 +148,12 @@ void badTest5(const char* ptr,wchar_t *wc,int wc_len)
138
148
}
139
149
}
140
150
141
- void badTest6 (const char * ptr,wchar_t *wc, int wc_len)
151
+ void badTest6 (const char * ptr,int wc_len)
142
152
{
143
153
int ret;
144
154
int len;
145
155
len = wc_len;
156
+ wchar_t *wc = new wchar_t [wc_len];
146
157
while (*ptr && wc_len > 0 ) {
147
158
ret = mbtowc (wc, ptr, wc_len); // BAD
148
159
if (ret <0 )
@@ -160,11 +171,12 @@ void badTest6(const char* ptr,wchar_t *wc,int wc_len)
160
171
ptr+=ret;
161
172
}
162
173
}
163
- void badTest7 (const char * ptr,wchar_t *wc, int wc_len)
174
+ void badTest7 (const char * ptr,int wc_len)
164
175
{
165
176
int ret;
166
177
int len;
167
178
len = wc_len;
179
+ wchar_t *wc = new wchar_t [wc_len];
168
180
while (*ptr && wc_len > 0 ) {
169
181
ret = mbtowc (wc, ptr, len); // BAD
170
182
if (ret <0 )
0 commit comments