︙ | | | ︙ | |
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
@throw [OFOutOfRangeException exception];
UTF16Len = (DWORD)stringLen;
memcpy(UTF16, string.UTF16String, stringLen);
}
if (UTF16Len > 0 && _incompleteUTF16Surrogate != 0) {
of_unichar_t c =
(((_incompleteUTF16Surrogate & 0x3FF) << 10) |
(UTF16[0] & 0x3FF)) + 0x10000;
char UTF8[4];
size_t UTF8Len;
if ((UTF8Len = of_string_utf8_encode(c, UTF8)) == 0)
@throw [OFInvalidEncodingException exception];
|
|
|
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
@throw [OFOutOfRangeException exception];
UTF16Len = (DWORD)stringLen;
memcpy(UTF16, string.UTF16String, stringLen);
}
if (UTF16Len > 0 && _incompleteUTF16Surrogate != 0) {
OFUnichar c =
(((_incompleteUTF16Surrogate & 0x3FF) << 10) |
(UTF16[0] & 0x3FF)) + 0x10000;
char UTF8[4];
size_t UTF8Len;
if ((UTF8Len = of_string_utf8_encode(c, UTF8)) == 0)
@throw [OFInvalidEncodingException exception];
|
︙ | | | ︙ | |
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
}
_incompleteUTF16Surrogate = 0;
i++;
}
for (; i < UTF16Len; i++) {
of_unichar_t c = UTF16[i];
char UTF8[4];
size_t UTF8Len;
/* Missing high surrogate */
if ((c & 0xFC00) == 0xDC00)
@throw [OFInvalidEncodingException exception];
|
|
|
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
|
}
_incompleteUTF16Surrogate = 0;
i++;
}
for (; i < UTF16Len; i++) {
OFUnichar c = UTF16[i];
char UTF8[4];
size_t UTF8Len;
/* Missing high surrogate */
if ((c & 0xFC00) == 0xDC00)
@throw [OFInvalidEncodingException exception];
|
︙ | | | ︙ | |
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
|
of_char16_t *tmp;
size_t i = 0, j = 0;
if (length > SIZE_MAX / 2)
@throw [OFOutOfRangeException exception];
if (_incompleteUTF8SurrogateLen > 0) {
of_unichar_t c;
of_char16_t UTF16[2];
ssize_t UTF8Len;
size_t toCopy;
DWORD UTF16Len, bytesWritten;
UTF8Len = -of_string_utf8_decode(
_incompleteUTF8Surrogate, _incompleteUTF8SurrogateLen, &c);
|
|
|
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
|
of_char16_t *tmp;
size_t i = 0, j = 0;
if (length > SIZE_MAX / 2)
@throw [OFOutOfRangeException exception];
if (_incompleteUTF8SurrogateLen > 0) {
OFUnichar c;
of_char16_t UTF16[2];
ssize_t UTF8Len;
size_t toCopy;
DWORD UTF16Len, bytesWritten;
UTF8Len = -of_string_utf8_decode(
_incompleteUTF8Surrogate, _incompleteUTF8SurrogateLen, &c);
|
︙ | | | ︙ | |
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
|
}
tmp = of_alloc(length * 2, sizeof(of_char16_t));
@try {
DWORD bytesWritten;
while (i < length) {
of_unichar_t c;
ssize_t UTF8Len;
UTF8Len = of_string_utf8_decode(buffer + i, length - i,
&c);
if (UTF8Len < 0 && UTF8Len >= -4) {
OF_ENSURE(length - i < 4);
|
|
|
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
|
}
tmp = of_alloc(length * 2, sizeof(of_char16_t));
@try {
DWORD bytesWritten;
while (i < length) {
OFUnichar c;
ssize_t UTF8Len;
UTF8Len = of_string_utf8_decode(buffer + i, length - i,
&c);
if (UTF8Len < 0 && UTF8Len >= -4) {
OF_ENSURE(length - i < 4);
|
︙ | | | ︙ | |