From: Timo Sirainen Date: Sun, 23 May 2004 01:58:24 +0000 (+0300) Subject: o_stream_send_istream() fix X-Git-Tag: 1.1.alpha1~4066 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8a3d0935fb63a7e8e4b07f43471a24f8d063204f;p=thirdparty%2Fdovecot%2Fcore.git o_stream_send_istream() fix --HG-- branch : HEAD --- diff --git a/src/lib/ostream-file.c b/src/lib/ostream-file.c index 28ec1db79a..a9e220eb89 100644 --- a/src/lib/ostream-file.c +++ b/src/lib/ostream-file.c @@ -701,7 +701,8 @@ static off_t io_stream_copy_backwards(struct _ostream *outstream, (void)i_stream_read_data(instream, &data, &size, read_size-1); - if (size == read_size) { + if (size >= read_size) { + size = read_size; if (instream->mmaped) { /* we'll have to write it through buffer of the file gets corrupted */ @@ -713,15 +714,11 @@ static off_t io_stream_copy_backwards(struct _ostream *outstream, break; } - i_assert(size < read_size); - if (size < read_size) { - /* buffer too large probably, - try with smaller */ - read_size -= size; - in_offset += read_size; - out_offset += read_size; - buffer_size -= read_size; - } + /* buffer too large probably, try with smaller */ + read_size -= size; + in_offset += read_size; + out_offset += read_size; + buffer_size -= read_size; } in_limit -= size;