* unnecessary.
*/
-#include <stdlib.h>
-#include <inttypes.h>
+#include <stdint.h>
#include <wchar.h>
#include <errno.h>
-
#include "internal.h"
size_t mbsrtowcs(wchar_t *restrict ws, const char **restrict src, size_t wn, mbstate_t *restrict st)
wn--;
c = 0;
} else for (;;) {
- if (!wn) return wn0;
+ if (!wn) {
+ *src = (const void *)s;
+ return wn0;
+ }
if (*s-1u < 0x7f && (uintptr_t)s%4 == 0) {
- while (wn>=4 && !(( *(uint32_t*)s | *(uint32_t*)s-0x01010101) & 0x80808080)) {
+ while (wn>=5 && !(( *(uint32_t*)s | *(uint32_t*)s-0x01010101) & 0x80808080)) {
*ws++ = *s++;
*ws++ = *s++;
*ws++ = *s++;