diff options
-rw-r--r-- | tests/012/buf.tl | 6 | ||||
-rw-r--r-- | utf8.c | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/tests/012/buf.tl b/tests/012/buf.tl index 1c8040d6..8f494264 100644 --- a/tests/012/buf.tl +++ b/tests/012/buf.tl @@ -2,3 +2,9 @@ (vtest (uint-buf (make-buf 8 255 16)) (pred (expt 2 64))) (test (int-buf (make-buf 8 255 16)) -1) + +(mtest + (str-buf #b'E6BC') "\xDCE6\xDCBC" + (buf-str "\xDCE6\xDCBC") #b'E6BC' + (str-buf #b'E6') "\xDCE6" + (buf-str "\xDCE6") #b'E6') @@ -138,8 +138,18 @@ size_t utf8_from_buf(wchar_t *wdst, const unsigned char *src, size_t nbytes) } } + if (state != utf8_init) { + while (backtrack != src) { + if (wdst) + *wdst++ = 0xDC00 | *backtrack; + nchar++; + backtrack++; + } + } + if (wdst) *wdst++ = 0; + return nchar; } |