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