This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Sticky EOF breaks stream concatenation via dup2 [BZ #23636]
- From: Florian Weimer <fweimer at redhat dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Date: Mon, 17 Sep 2018 15:37:03 +0200
- Subject: Sticky EOF breaks stream concatenation via dup2 [BZ #23636]
Do we have to revert the fix fpr bug 1190 (which introduces sticky EOF
for stdio streams)?
We received a bug report that cups-filters is quite broken due to this
change, and while reviewing the libio sources, I found evidence that
what cups-filters does (dup2-ing another descriptor after EOF) was once
considered supported (in _IO_new_file_underflow):
fp->_IO_read_end += count;
if (count == 0)
{
/* If a stream is read to EOF, the calling application may switch
active
handles. As a result, our offset cache would no longer be valid, so
unset it. */
fp->_offset = _IO_pos_BAD;
return EOF;
}
Usually, when our own testing finds bugs, that's that's just a small
subset of what the larger user community (many of whom cannot recompile
their applications) will experience once they upgrade, so I'm quite
worried about the implications of the fix for bug 1190.
Thanks,
Florian