#include "internal.h"
-size_t mbrtowc(wchar_t *wc, const char *src, size_t n, mbstate_t *st)
+size_t mbrtowc(wchar_t *restrict wc, const char *restrict src, size_t n, mbstate_t *restrict st)
{
static unsigned internal_state;
unsigned c;
c = *(unsigned *)st;
if (!s) {
- s = "";
- wc = (void *)&wc;
- n = 1;
+ if (c) goto ilseq;
+ return 0;
} else if (!wc) wc = (void *)&wc;
if (!n) return -2;
*(unsigned *)st = c;
return -2;
ilseq:
- *(unsigned *)st = FAILSTATE;
+ *(unsigned *)st = 0;
errno = EILSEQ;
return -1;
}