diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cdreader.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/cdreader.cpp b/lib/cdreader.cpp index f24e54b..cdb2671 100644 --- a/lib/cdreader.cpp +++ b/lib/cdreader.cpp @@ -78,16 +78,15 @@ ssize_t cdreader::read(void *buf, size_t count) throw (GeneralException) { char sector[CD_FRAMESIZE_RAW]; size_t r = count; - fprintf(stderr, "Asked to cd-read %i bytes at %i\n", count, (int) itell); - size_t remain = itell % CD_FRAMESIZE_RAW; - fprintf(stderr, "Seeking to sector %li, to read at %i\n", itell / CD_FRAMESIZE_RAW, (int) remain); sectorseek(itell / CD_FRAMESIZE_RAW); while (count > 0) { - size_t n = CD_FRAMESIZE_RAW - remain; + size_t n = MIN(CD_FRAMESIZE_RAW - remain, count); getsector(sector); - bcopy(sector + remain, buf, MIN(n, count)); + bcopy(sector + remain, buf, n); + buf = ((char *) buf) + n; + itell += n; count -= n; remain = 0; } |