From: Pavel Charvat Date: Tue, 17 Jul 2007 13:54:06 +0000 (+0200) Subject: fixed a well hidden bug in file fastbufs X-Git-Tag: holmes-import~506^2~13^2~94 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=534019614dd611e7df29a0c8c59f2a869a2c0c39;p=libucw.git fixed a well hidden bug in file fastbufs --- diff --git a/lib/fb-file.c b/lib/fb-file.c index 9ac57395..82236230 100644 --- a/lib/fb-file.c +++ b/lib/fb-file.c @@ -102,16 +102,14 @@ long_seek: if ((sh_off_t)back > f->pos) back = f->pos; f->bptr = f->buffer + back; - read_len = back + diff - F->wlen; + read_len = blen; + f->bstop = f->buffer + read_len; /* Reuse part of previous window */ - if (F->wlen && read_len < blen) + if (F->wlen && read_len <= back + diff && read_len > back + diff - F->wlen) { - uns keep = MIN(F->wlen, blen - read_len); - memmove(f->buffer + read_len, f->buffer, keep); - f->bstop = f->buffer + read_len + keep; + uns keep = read_len + F->wlen - back - diff; + memmove(f->buffer + read_len - keep, f->buffer, keep); } - else - f->bstop = f->buffer + (read_len = blen); seek: /* Do lseek() */ F->wpos = f->pos + (f->buffer - f->bptr);