summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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");