Skip to content
Permalink
Browse files
Make sure read buffers get reinitialized before refilling (thanks, Mi…
…chael!).
  • Loading branch information
icculus committed Sep 11, 2014
1 parent c9f4034 commit f6a62ecad106821a517fbdb07d31a8d825fffb64
Showing with 7 additions and 3 deletions.
  1. +3 −0 docs/CREDITS.txt
  2. +4 −3 src/physfs.c
@@ -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. */
{

0 comments on commit f6a62ec

Please sign in to comment.