diff options
| author | Nicolas Pennequin <nicolas.pennequin@free.fr> | 2008-04-16 16:18:05 +0000 |
|---|---|---|
| committer | Nicolas Pennequin <nicolas.pennequin@free.fr> | 2008-04-16 16:18:05 +0000 |
| commit | de026dcedefec81b585a7e00a06712273d57ea64 (patch) | |
| tree | 415805e588cf36f08c94078209fd5fafcf16be69 | |
| parent | 689020f68976feb63220e1938922203a2de66b6b (diff) | |
| download | rockbox-de026dcedefec81b585a7e00a06712273d57ea64.zip rockbox-de026dcedefec81b585a7e00a06712273d57ea64.tar.gz rockbox-de026dcedefec81b585a7e00a06712273d57ea64.tar.bz2 rockbox-de026dcedefec81b585a7e00a06712273d57ea64.tar.xz | |
Fix FS#8902 (NSF files get skipped). The cause was too strict metadata checking (the NSF metadata parser doesn't fill the 'length' field). Hopefully there won't be any problems with that anymore.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17142 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | apps/buffering.c | 6 | ||||
| -rw-r--r-- | apps/playback.c | 2 |
2 files changed, 6 insertions, 2 deletions
diff --git a/apps/buffering.c b/apps/buffering.c index 113650f..9dafa67 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -589,7 +589,11 @@ static bool buffer_handle(int handle_id) if (h->type == TYPE_ID3) { - get_metadata((struct mp3entry *)(buffer + h->data), h->fd, h->path); + if (!get_metadata((struct mp3entry *)(buffer + h->data), h->fd, h->path)) + { + /* metadata parsing failed: clear the buffer. */ + memset(buffer + h->data, 0, sizeof(struct mp3entry)); + } close(h->fd); h->fd = -1; h->filerem = 0; diff --git a/apps/playback.c b/apps/playback.c index c4b5320..922a30d 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -1709,7 +1709,7 @@ static void audio_finish_load_track(void) else track_id3 = bufgetid3(tracks[track_widx].id3_hid); - if (track_id3->length == 0 || track_id3->filesize == 0) + if (track_id3->length == 0 && track_id3->filesize == 0) { logf("audio_finish_load_track: invalid metadata"); |