diff options
Diffstat (limited to 'src/playlist_song.c')
-rw-r--r-- | src/playlist_song.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/playlist_song.c b/src/playlist_song.c index 20fac59d8..1e8e98795 100644 --- a/src/playlist_song.c +++ b/src/playlist_song.c @@ -72,6 +72,14 @@ apply_song_metadata(struct song *dest, const struct song *src) song_free(dest); } + if (dest->tag != NULL && dest->tag->time > 0 && + src->start_ms > 0 && src->end_ms == 0 && + src->start_ms / 1000 < (unsigned)dest->tag->time) + /* the range is open-ended, and the playlist plugin + did not know the total length of the song file + (e.g. last track on a CUE file); fix it up here */ + tmp->tag->time = dest->tag->time - src->start_ms / 1000; + return tmp; } |