Previously the stream_errno was reset to 0, but this required the istream
implementation to correctly set the stream_errno back, which wasn't often
done.
size_t old_size;
ssize_t ret;
- if (unlikely(stream->closed)) {
+ if (unlikely(stream->closed || stream->stream_errno != 0)) {
errno = stream->stream_errno;
return -1;
}
stream->eof = FALSE;
- stream->stream_errno = 0;
if (_stream->parent != NULL)
i_stream_seek(_stream->parent, _stream->parent_expected_offset);