Mercurial > dovecot > original-hg > dovecot-1.2
changeset 75:7418fefb57a8 HEAD
IOBuffer was buggy if start_offset wasn't 0
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 28 Aug 2002 22:25:16 +0300 |
parents | d6ab9aa7e105 |
children | 8035cf09b913 |
files | src/lib/iobuffer.c |
diffstat | 1 files changed, 8 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/iobuffer.c Wed Aug 28 22:09:47 2002 +0300 +++ b/src/lib/iobuffer.c Wed Aug 28 22:25:16 2002 +0300 @@ -735,21 +735,21 @@ { uoff_t real_offset; + real_offset = buf->start_offset + offset; + if (real_offset > OFF_T_MAX) { + errno = EINVAL; + return FALSE; + } + if (buf->mmaped) { /* first reset everything */ io_buffer_reset(buf); /* then set the wanted position, next read will pick up from there */ - buf->offset = buf->start_offset; - buf->pos = buf->skip = offset; + buf->offset = 0; + buf->pos = buf->skip = real_offset; } else { - real_offset = buf->start_offset + offset; - if (real_offset > OFF_T_MAX) { - errno = EINVAL; - return FALSE; - } - if (lseek(buf->fd, (off_t)real_offset, SEEK_SET) != (off_t)real_offset) return FALSE;