i_error("%s", zstream->istream.iostream.error);
}
+static void lzma_stream_end(struct lzma_istream *zstream)
+{
+ zstream->eof_offset = zstream->istream.istream.v_offset +
+ (zstream->istream.pos - zstream->istream.skip);
+ zstream->stream_size = zstream->eof_offset;
+}
+
static ssize_t i_stream_lzma_read(struct istream_private *stream)
{
struct lzma_istream *zstream = (struct lzma_istream *)stream;
stream->parent->stream_errno;
} else {
i_assert(stream->parent->eof);
- lzma_read_error(zstream, "unexpected EOF");
- stream->istream.stream_errno = EINVAL;
+ lzma_stream_end(zstream);
+ stream->istream.eof = TRUE;
}
return -1;
}
i_fatal_status(FATAL_OUTOFMEM, "lzma.read(%s): Out of memory",
i_stream_get_name(&stream->istream));
case LZMA_STREAM_END:
- zstream->eof_offset = stream->istream.v_offset +
- (stream->pos - stream->skip);
- zstream->stream_size = zstream->eof_offset;
+ lzma_stream_end(zstream);
if (out_size == 0) {
stream->istream.eof = TRUE;
return -1;