summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/flac.c12
-rw-r--r--apps/codecs/sid.c16
2 files changed, 9 insertions, 19 deletions
diff --git a/apps/codecs/flac.c b/apps/codecs/flac.c
index 2eb0deb9f5..d1c52833a6 100644
--- a/apps/codecs/flac.c
+++ b/apps/codecs/flac.c
@@ -77,8 +77,7 @@ static bool flac_init(FLACContext* fc, int first_frame_offset)
uint32_t offset_hi,offset_lo;
uint16_t blocksize;
int endofmetadata=0;
- int blocklength;
- int n;
+ uint32_t blocklength;
ci->memset(fc,0,sizeof(FLACContext));
nseekpoints=0;
@@ -113,9 +112,7 @@ static bool flac_init(FLACContext* fc, int first_frame_offset)
if ((buf[0] & 0x7f) == 0) /* 0 is the STREAMINFO block */
{
- /* FIXME: Don't trust the value of blocklength, use actual return
- * value in bytes instead */
- ci->read_filebuf(buf, blocklength);
+ if (ci->read_filebuf(buf, blocklength) < blocklength) return false;
fc->filesize = ci->filesize;
fc->min_blocksize = (buf[0] << 8) | buf[1];
@@ -140,9 +137,8 @@ static bool flac_init(FLACContext* fc, int first_frame_offset)
} else if ((buf[0] & 0x7f) == 3) { /* 3 is the SEEKTABLE block */
while ((nseekpoints < MAX_SUPPORTED_SEEKTABLE_SIZE) &&
(blocklength >= 18)) {
- n=ci->read_filebuf(buf,18);
- if (n < 18) return false;
- blocklength-=n;
+ if (ci->read_filebuf(buf,18) < 18) return false;
+ blocklength-=18;
seekpoint_hi=(buf[0] << 24) | (buf[1] << 16) |
(buf[2] << 8) | buf[3];
diff --git a/apps/codecs/sid.c b/apps/codecs/sid.c
index 1c98714357..c6d3c43170 100644
--- a/apps/codecs/sid.c
+++ b/apps/codecs/sid.c
@@ -1204,8 +1204,6 @@ unsigned short LoadSIDFromMemory(void *pSidData, unsigned short *load_addr,
enum codec_status codec_main(void)
{
- size_t n, bytesfree;
- unsigned char *p;
unsigned int filesize;
unsigned short load_addr, init_addr, play_addr;
@@ -1229,20 +1227,16 @@ next_track:
codec_set_replaygain(ci->id3);
- /* Load SID file */
- p = sidfile;
- bytesfree=sizeof(sidfile);
- while ((n = ci->read_filebuf(p, bytesfree)) > 0) {
- p += n;
- bytesfree -= n;
- }
- filesize = p-sidfile;
+ /* Load SID file the read_filebuf callback will return the full requested
+ * size if at all possible, so there is no need to loop */
+ filesize = ci->read_filebuf(sidfile, sizeof(sidfile));
if (filesize == 0)
return CODEC_ERROR;
c64Init(44100);
- LoadSIDFromMemory(sidfile, &load_addr, &init_addr, &play_addr, &subSongsMax, &subSong, &song_speed, filesize);
+ LoadSIDFromMemory(sidfile, &load_addr, &init_addr, &play_addr,
+ &subSongsMax, &subSong, &song_speed, filesize);
sidPoke(24, 15); /* Turn on full volume */
cpuJSR(init_addr, subSong); /* Start the song initialize */