diff options
author | Max Kellermann <max@duempel.org> | 2016-02-22 12:37:33 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2016-02-22 13:14:37 +0100 |
commit | 57da5c0841dd88078b40e53112c6327e0d39315b (patch) | |
tree | f6ac48e142009ad8c1be6f85278e31eb14ec04ef | |
parent | a224722ae2f662e1b8171087e8e9ae680af5827c (diff) |
tag/Id3Load: simplify end offset calculation
-rw-r--r-- | src/tag/Id3Load.cxx | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/tag/Id3Load.cxx b/src/tag/Id3Load.cxx index 95769084c..bcbac35ba 100644 --- a/src/tag/Id3Load.cxx +++ b/src/tag/Id3Load.cxx @@ -138,11 +138,15 @@ tag_id3_find_from_beginning(FILE *stream) static UniqueId3Tag tag_id3_find_from_end(FILE *stream) { + off_t offset = -(off_t)ID3V1_SIZE; + /* Get an id3v1 tag from the end of file for later use */ - auto v1tag = tag_id3_read(stream, -(off_t)ID3V1_SIZE, SEEK_END); + auto v1tag = tag_id3_read(stream, offset, SEEK_END); + if (!v1tag) + offset = 0; /* Get the id3v2 tag size from the footer (located before v1tag) */ - int tagsize = get_id3v2_footer_size(stream, (v1tag ? -(off_t)ID3V1_SIZE : 0) - ID3_TAG_QUERYSIZE, SEEK_END); + int tagsize = get_id3v2_footer_size(stream, offset - ID3_TAG_QUERYSIZE, SEEK_END); if (tagsize >= 0) return v1tag; |