Make sure read buffers get reinitialized before refilling (thanks, Michael!).
This commit is contained in:
parent
c9f40346bc
commit
f6a62ecad1
|
@ -139,6 +139,9 @@ Bug fixes:
|
|||
Bug fixes:
|
||||
Andreas Karlsson
|
||||
|
||||
Bug fixes:
|
||||
Michael Bacon
|
||||
|
||||
pkg-config support:
|
||||
Jonas Kulla
|
||||
|
||||
|
|
|
@ -2556,20 +2556,21 @@ static PHYSFS_sint64 doBufferedRead(FileHandle *fh, void *buffer,
|
|||
memcpy(buffer, fh->buffer + fh->bufpos, (size_t) len);
|
||||
fh->bufpos += (PHYSFS_uint32) len;
|
||||
return (PHYSFS_sint64) len;
|
||||
} /* else if */
|
||||
} /* if */
|
||||
|
||||
if (buffered > 0) /* partially in the buffer... */
|
||||
else if (buffered > 0) /* partially in the buffer... */
|
||||
{
|
||||
memcpy(buffer, fh->buffer + fh->bufpos, (size_t) buffered);
|
||||
buffer = ((PHYSFS_uint8 *) buffer) + buffered;
|
||||
len -= buffered;
|
||||
retval = buffered;
|
||||
fh->buffill = fh->bufpos = 0;
|
||||
} /* if */
|
||||
|
||||
/* if you got here, the buffer is drained and we still need bytes. */
|
||||
assert(len > 0);
|
||||
|
||||
fh->buffill = fh->bufpos = 0;
|
||||
|
||||
io = fh->io;
|
||||
if (len >= fh->bufsize) /* need more than the buffer takes. */
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue