Mercurial > dovecot > original-hg > dovecot-1.2
changeset 1874:4bff66d9b834 HEAD
fixes
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 10 Nov 2003 23:36:13 +0200 |
parents | ed5e808d934f |
children | c901f6afdc8d |
files | src/lib/istream-limit.c src/lib/istream.c |
diffstat | 2 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/istream-limit.c Mon Nov 10 22:36:02 2003 +0200 +++ b/src/lib/istream-limit.c Mon Nov 10 23:36:13 2003 +0200 @@ -47,17 +47,19 @@ ssize_t ret; size_t pos; - if (stream->istream.v_offset >= lstream->v_size) + if (stream->istream.v_offset + + (stream->pos - stream->skip) >= lstream->v_size) return -1; if (lstream->input->v_offset != lstream->v_start_offset + stream->istream.v_offset) { i_stream_seek(lstream->input, - lstream->v_start_offset + stream->istream.v_offset); + lstream->v_start_offset + + stream->istream.v_offset); } if (i_stream_read(lstream->input) == -2 && stream->buffer != NULL) { - if (lstream->istream.skip == 0) + if (stream->skip == 0) return -2; stream->istream.eof = lstream->input->eof; } @@ -70,9 +72,9 @@ if (pos > left) pos = left; - ret = pos <= lstream->istream.pos ? -1 : + ret = pos <= stream->pos ? -1 : (ssize_t) (pos - stream->pos); - lstream->istream.pos = pos; + stream->pos = pos; return ret; }
--- a/src/lib/istream.c Mon Nov 10 22:36:02 2003 +0200 +++ b/src/lib/istream.c Mon Nov 10 23:36:13 2003 +0200 @@ -78,11 +78,15 @@ { struct _istream *_stream = stream->real_stream; + if (v_offset > stream->v_offset) { + i_stream_skip(stream, v_offset - stream->v_offset); + return; + } + if (stream->closed) return; - if (v_offset < stream->v_offset) - stream->eof = FALSE; + stream->eof = FALSE; _stream->seek(_stream, v_offset); }