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:
parent
6867acc18e
commit
d119ce6f9a
1 changed files with 2 additions and 0 deletions
|
@ -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];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue