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");