saa_fread/fwrite: when seeking, must set [rw]ptr as well

[rw]ptr represent the global position and need to be kept in sync with
[rw]pos:[rw]blk at all times.  Failed to do that while seeking, with
obviously bad results.
This commit is contained in:
H. Peter Anvin 2007-10-10 18:07:51 -07:00
parent 6867acc18e
commit d119ce6f9a

View file

@ -692,6 +692,7 @@ void saa_fread(struct SAA *s, size_t posn, void *data, size_t len)
} }
ix = posn / s->blk_len; ix = posn / s->blk_len;
s->rptr = posn;
s->rpos = posn % s->blk_len; s->rpos = posn % s->blk_len;
s->rblk = &s->blk_ptrs[ix]; s->rblk = &s->blk_ptrs[ix];
@ -710,6 +711,7 @@ void saa_fwrite(struct SAA *s, size_t posn, const void *data, size_t len)
} }
ix = posn / s->blk_len; ix = posn / s->blk_len;
s->wptr = posn;
s->wpos = posn % s->blk_len; s->wpos = posn % s->blk_len;
s->wblk = &s->blk_ptrs[ix]; s->wblk = &s->blk_ptrs[ix];