Browse Source

mbtowc: Fix non compliant behavior for end of string

Match glibc behavior.

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

Signed-off-by: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Christophe Lyon 5 years ago
parent
commit
e54692f524
1 changed files with 5 additions and 1 deletions
  1. 5 1
      libc/stdlib/stdlib.c

+ 5 - 1
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? */