[Bug 212033] fgetwln(3) fails to report most encoding errors
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sun Aug 21 21:33:24 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=212033
Bug ID: 212033
Summary: fgetwln(3) fails to report most encoding errors
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: bin
Assignee: freebsd-bugs at FreeBSD.org
Reporter: schwarze at usta.de
Created attachment 173919
--> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=173919&action=edit
Patch to stdio/fgetwln.c to make fgetwln(3) fail on fgetwc(3) failure.
The fgetwln(3) manual is quite explicit that the "fgetwln() function
may also fail ... for any of the errors specified for ... mbrtowc(3)"
and that it must return NULL in case of failure. That's sensible;
we shouldn't expect programmers to inspect ferror(3) or errno(2)
after getting a function return value indicating success.
However, after reading a single valid character, fgetwln(3) will
mistreat all subsequent encoding errors as newlines - returning
success when encountering an invalid encoding, but still setting
both errno(3) and the stdio error indicator.
I committed a fix to OpenBSD which is likely to apply mostly as-is
to FreeBSD as well, see the attachment.
original bug report: http://marc.info/?l=openbsd-tech&m=147178904527666
OpenBSD commit: http://marc.info/?l=openbsd-cvs&m=147181388632431
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdio/fgetwln.c
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list