# HG changeset patch # User Timo Sirainen # Date 1030562716 -10800 # Node ID 7418fefb57a8ba7c9fb992c4c902747cadf623e4 # Parent d6ab9aa7e1053c97431f75dc5b5f44ab3f94b726 IOBuffer was buggy if start_offset wasn't 0 diff -r d6ab9aa7e105 -r 7418fefb57a8 src/lib/iobuffer.c --- 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;