提交 511d7073 编写于 作者: R Rich Felker

make fgetwc set error indicator for stream on encoding errors

this is a requirement in POSIX that's omitted, and seemed potentially
non-conforming, in the C standard. as such it was omitted here.
however, as part of Austin Group issue #1170, the discrepancy was
raised with WG14 and determined to be unintended; future versions of
the C standard will require the error indicator to be set, as POSIX
does.
上级 d02e72ad
......@@ -25,12 +25,18 @@ static wint_t __fgetwc_unlocked_internal(FILE *f)
do {
b = c = getc_unlocked(f);
if (c < 0) {
if (!first) errno = EILSEQ;
if (!first) {
f->flags |= F_ERR;
errno = EILSEQ;
}
return WEOF;
}
l = mbrtowc(&wc, (void *)&b, 1, &st);
if (l == -1) {
if (!first) ungetc(b, f);
if (!first) {
f->flags |= F_ERR;
ungetc(b, f);
}
return WEOF;
}
first = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册