summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2016-02-22 12:37:33 +0100
committerMax Kellermann <max@duempel.org>2016-02-22 13:14:37 +0100
commit57da5c0841dd88078b40e53112c6327e0d39315b (patch)
treef6ac48e142009ad8c1be6f85278e31eb14ec04ef
parenta224722ae2f662e1b8171087e8e9ae680af5827c (diff)
tag/Id3Load: simplify end offset calculation
-rw-r--r--src/tag/Id3Load.cxx8
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;