diff --git a/usr/src/lib/libc/port/locale/mbtowc.c b/usr/src/lib/libc/port/locale/mbtowc.c index 90dc2e6..ac71fc2 100644 --- a/usr/src/lib/libc/port/locale/mbtowc.c +++ b/usr/src/lib/libc/port/locale/mbtowc.c @@ -45,9 +45,15 @@ mbtowc_l(wchar_t *_RESTRICT_KYWD pwc, const char *_RESTRICT_KYWD s, size_t n, return (0); } rval = mbrtowc_l(pwc, s, n, &mbs, loc); - if (rval == (size_t)-1 || rval == (size_t)-2) + switch (rval) { + case (size_t)-2: + errno = EILSEQ; + /* FALLTHROUGH */ + case (size_t)-1: return (-1); - return ((int)rval); + default: + return ((int)rval); + } } int