svn commit: r297440 - stable/10/lib/libc/locale
Pedro F. Giffuni
pfg at FreeBSD.org
Thu Mar 31 01:36:52 UTC 2016
Author: pfg
Date: Thu Mar 31 01:36:50 2016
New Revision: 297440
URL: https://svnweb.freebsd.org/changeset/base/297440
Log:
MFC r296278:
mbtowc(3): set errno to EILSEQ if an incomplete character is passed.
According to POSIX, The mbtowc() function shall fail if:
[EILSEQ] An invalid character sequence is detected.
Reviewed by: bapt
Differential Revision: https://reviews.freebsd.org/D5496
Obtained from: OpenBSD (Ingo Schwarze)
Modified:
stable/10/lib/libc/locale/mbtowc.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/lib/libc/locale/mbtowc.c
==============================================================================
--- stable/10/lib/libc/locale/mbtowc.c Thu Mar 31 00:53:23 2016 (r297439)
+++ stable/10/lib/libc/locale/mbtowc.c Thu Mar 31 01:36:50 2016 (r297440)
@@ -32,6 +32,7 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#include <errno.h>
#include <stdlib.h>
#include <wchar.h>
#include "mblocal.h"
@@ -49,9 +50,15 @@ mbtowc_l(wchar_t * __restrict pwc, const
return (0);
}
rval = XLOCALE_CTYPE(locale)->__mbrtowc(pwc, s, n, &locale->mbtowc);
- 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
mbtowc(wchar_t * __restrict pwc, const char * __restrict s, size_t n)
More information about the svn-src-stable
mailing list