about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/stdio/fgetwc.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/stdio/fgetwc.c b/src/stdio/fgetwc.c
index 0801e28f..aa10b818 100644
--- a/src/stdio/fgetwc.c
+++ b/src/stdio/fgetwc.c
@@ -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;