ldso: support DT_RELR relative relocation format
[musl] / src / multibyte / wcrtomb.c
index 250649f..8e34926 100644 (file)
@@ -1,14 +1,6 @@
-/* 
- * This code was written by Rich Felker in 2010; no copyright is claimed.
- * This code is in the public domain. Attribution is appreciated but
- * unnecessary.
- */
-
 #include <stdlib.h>
-#include <inttypes.h>
 #include <wchar.h>
 #include <errno.h>
-
 #include "internal.h"
 
 size_t wcrtomb(char *restrict s, wchar_t wc, mbstate_t *restrict st)
@@ -17,6 +9,13 @@ size_t wcrtomb(char *restrict s, wchar_t wc, mbstate_t *restrict st)
        if ((unsigned)wc < 0x80) {
                *s = wc;
                return 1;
+       } else if (MB_CUR_MAX == 1) {
+               if (!IS_CODEUNIT(wc)) {
+                       errno = EILSEQ;
+                       return -1;
+               }
+               *s = wc;
+               return 1;
        } else if ((unsigned)wc < 0x800) {
                *s++ = 0xc0 | (wc>>6);
                *s = 0x80 | (wc&0x3f);