diff --git a/inc/stdlib.h b/inc/stdlib.h index 929c99e..d702748 100644 --- a/inc/stdlib.h +++ b/inc/stdlib.h @@ -35,8 +35,7 @@ typedef struct lldiv_t { #define RAND_MAX 65536 -#define MB_LEN_MAX 4 -#define MB_CUR_MAX 4 +#define MB_CUR_MAX 5 // Microsoft extension, COUNTOF(x) counts array elements #ifndef COUNTOF diff --git a/inc/uchar.h b/inc/uchar.h index 0871202..f4eb23c 100644 --- a/inc/uchar.h +++ b/inc/uchar.h @@ -12,7 +12,7 @@ struct mbstate_t { union { char16_t leftover; char16_t high_surrogate; - } + }; }; size_t mbrtoc16( diff --git a/src/code/uchar.c b/src/code/uchar.c index e4773a4..3a01b97 100644 --- a/src/code/uchar.c +++ b/src/code/uchar.c @@ -82,10 +82,11 @@ size_t c16rtomb( } else goto invalid_char; // Write the codepoint that we decided to write to multibyte string - int written_len = utf8_chenc(s, 4, codepoint_to_write); + int written_len = utf8_chenc((char8_t *)s, 4, codepoint_to_write); if(written_len < 0) { goto invalid_char; } + s[written_len] = 0; return (size_t)written_len; invalid_char: errno = EILSEQ;