From de026dcedefec81b585a7e00a06712273d57ea64 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Wed, 16 Apr 2008 16:18:05 +0000 Subject: [PATCH] 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 --- apps/buffering.c | 6 +++++- apps/playback.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/buffering.c b/apps/buffering.c index 113650fe9f..9dafa673b0 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 c4b53204cf..922a30d2be 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");