Compare commits
7 Commits
Author | SHA1 | Date |
---|---|---|
![]() |
f2462dbeab | |
![]() |
22d58219e7 | |
![]() |
3cfd83e1a6 | |
![]() |
0275295c88 | |
![]() |
7e9085def4 | |
![]() |
b04ebb80e6 | |
![]() |
f2569b9423 |
|
@ -24,7 +24,7 @@ utf8_decode_char2(const char* src, size_t size, size_t* used)
|
|||
|
||||
if(!src || !size) {
|
||||
errno = EINVAL;
|
||||
return 0;
|
||||
return (wchar_t)-1;
|
||||
}
|
||||
if(used) *used = 1;
|
||||
ch = *src++;
|
||||
|
@ -57,26 +57,26 @@ utf8_decode_char2(const char* src, size_t size, size_t* used)
|
|||
ret = ch & 0x01;
|
||||
} else {
|
||||
errno = EILSEQ;
|
||||
return 0;
|
||||
return (wchar_t)-1;
|
||||
}
|
||||
|
||||
while(remain--) {
|
||||
if(!--size) {
|
||||
errno = EILSEQ;
|
||||
return 0;
|
||||
return (wchar_t)-1;
|
||||
}
|
||||
ch = *src++;
|
||||
if((ch & 0xC0) != 0x80) {
|
||||
errno = EILSEQ;
|
||||
return 0;
|
||||
return (wchar_t)-1;
|
||||
}
|
||||
ret <<= 6;
|
||||
ret |= ch & 0x3F;
|
||||
}
|
||||
|
||||
if(ch < min) {
|
||||
if(ret < min) {
|
||||
errno = EILSEQ;
|
||||
return 0;
|
||||
return (wchar_t)-1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -104,7 +104,7 @@ utf8_decode_char2_force(const char* src, size_t size, size_t* used,
|
|||
|
||||
if(!src || !size) {
|
||||
errno = EINVAL;
|
||||
return 0;
|
||||
return (wchar_t)-1;
|
||||
}
|
||||
if(used) *used = 1;
|
||||
ch = *src++;
|
||||
|
@ -143,7 +143,7 @@ utf8_decode_char2_force(const char* src, size_t size, size_t* used,
|
|||
ret |= ch & 0x3F;
|
||||
}
|
||||
|
||||
if(ch < min) goto ILSEQ;
|
||||
if(ret < min) goto ILSEQ;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -10,8 +10,7 @@
|
|||
struct utf8_encode_state*
|
||||
utf8_encoder(struct utf8_encode_state* state)
|
||||
{
|
||||
char* wr = state->wr, * ret;
|
||||
char* endp = wr + state->wr_size - 1;
|
||||
char* wr, * ret, * endp;
|
||||
wchar_t ch;
|
||||
enum utf8_encode_error_action error_action;
|
||||
int reencoding;
|
||||
|
@ -21,6 +20,9 @@ utf8_encoder(struct utf8_encode_state* state)
|
|||
return 0;
|
||||
}
|
||||
|
||||
wr = state->wr;
|
||||
endp = wr + state->wr_size - 1;
|
||||
|
||||
state->written = 0;
|
||||
while(state->rd_remain) {
|
||||
ch = *state->rd;
|
||||
|
|
|
@ -12,4 +12,4 @@
|
|||
SOMAJOR=1
|
||||
|
||||
# SOMICRO is bumped every time there is a binary-compatible release.
|
||||
SOMICRO=0
|
||||
SOMICRO=2
|
||||
|
|
Loading…
Reference in New Issue