summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Pennequin <nicolas.pennequin@free.fr>2008-04-16 16:18:05 +0000
committerNicolas Pennequin <nicolas.pennequin@free.fr>2008-04-16 16:18:05 +0000
commitde026dcedefec81b585a7e00a06712273d57ea64 (patch)
tree415805e588cf36f08c94078209fd5fafcf16be69
parent689020f68976feb63220e1938922203a2de66b6b (diff)
downloadrockbox-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.c6
-rw-r--r--apps/playback.c2
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");