Match glibc behavior.

        * libc/stdlib/stdlib.c (mbtowc): Fix end of string behavior.

Signed-off-by: Mickaël Guêné <mickael.gu...@st.com>
Signed-off-by: Christophe Lyon <christophe.l...@st.com>

diff --git a/libc/stdlib/stdlib.c b/libc/stdlib/stdlib.c
index 075e6e5..f593663 100644
--- a/libc/stdlib/stdlib.c
+++ b/libc/stdlib/stdlib.c
@@ -895,9 +895,13 @@ int mbtowc(wchar_t *__restrict pwc, register const char 
*__restrict s, size_t n)
                return is_stateful(ENCODING);
        }
 
-       if (*s == '\0')
+       if (*s == '\0') {
                /* According to the ISO C 89 standard this is the expected 
behaviour.  */
+               /* Standard not very clear here, so do like glibc.  */
+               if (pwc != NULL)
+                       *pwc = L'\0';
                return 0;
+    }
 
        if ((r = mbrtowc(pwc, s, n, &state)) == (size_t) -2) {
                /* TODO: Should we set an error state? */
-- 
2.6.3

_______________________________________________
devel mailing list
devel@uclibc-ng.org
https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel

Reply via email to