diff --git a/src/libutf8/200_decode.c b/src/libutf8/200_decode.c index f01b7e0..414ed50 100644 --- a/src/libutf8/200_decode.c +++ b/src/libutf8/200_decode.c @@ -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; } diff --git a/src/libutf8/500_encode_state.c b/src/libutf8/500_encode_state.c index ff76eba..3fe4946 100644 --- a/src/libutf8/500_encode_state.c +++ b/src/libutf8/500_encode_state.c @@ -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; diff --git a/src/libutf8/soversion b/src/libutf8/soversion index e1d9f1f..52b6370 100644 --- a/src/libutf8/soversion +++ b/src/libutf8/soversion @@ -12,4 +12,4 @@ SOMAJOR=1 # SOMICRO is bumped every time there is a binary-compatible release. -SOMICRO=0 +SOMICRO=2 diff --git a/version b/version index fc9751c..7ba279b 100644 --- a/version +++ b/version @@ -11,7 +11,7 @@ # expected to be in 'major.minor.micro' format. VERMAJOR=1 VERMINOR=3 -VERMICRO=0 +VERMICRO=2 # kate: replace-trailing-space-save true; space-indent true; tab-width 4; # vim: expandtab:ts=4:sw=4:syntax=sh