diff options
| author | Magnus Holmgren <magnushol@gmail.com> | 2008-01-06 19:49:25 +0000 |
|---|---|---|
| committer | Magnus Holmgren <magnushol@gmail.com> | 2008-01-06 19:49:25 +0000 |
| commit | d4cb075af70f1b56e80958f79cc4b584c1e68d67 (patch) | |
| tree | f27e7c59ec6ba322f77e0e33f8fcc711ed052de5 | |
| parent | f77b4da0c8f97e3758dcd536b732ad95454b53e6 (diff) | |
| download | rockbox-d4cb075af70f1b56e80958f79cc4b584c1e68d67.zip rockbox-d4cb075af70f1b56e80958f79cc4b584c1e68d67.tar.gz rockbox-d4cb075af70f1b56e80958f79cc4b584c1e68d67.tar.bz2 rockbox-d4cb075af70f1b56e80958f79cc4b584c1e68d67.tar.xz | |
Fix reading of ID3V2 tags with frame data length fields, hopefully without breaking anything else.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16006 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/id3.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/firmware/id3.c b/firmware/id3.c index e2f4546..1820078 100644 --- a/firmware/id3.c +++ b/firmware/id3.c @@ -838,9 +838,6 @@ static void setid3v2title(int fd, struct mp3entry *entry) framelen = bytes2int(0, header[3], header[4], header[5]); } - /* Keep track of the total size */ - totframelen = framelen; - logf("framelen = %ld", framelen); if(framelen == 0){ if (header[0] == 0 && header[1] == 0 && header[2] == 0) @@ -870,10 +867,9 @@ static void setid3v2title(int fd, struct mp3entry *entry) if(flags & 0x000c) /* Compression or encryption */ { - /* Skip it using the total size in case - it was truncated */ - size -= totframelen; - lseek(fd, totframelen, SEEK_CUR); + /* Skip it */ + size -= framelen; + lseek(fd, framelen, SEEK_CUR); continue; } @@ -891,6 +887,9 @@ static void setid3v2title(int fd, struct mp3entry *entry) } } + /* Keep track of the remaining frame size */ + totframelen = framelen; + /* If the frame is larger than the remaining buffer space we try to read as much as would fit in the buffer */ if(framelen >= buffersize - bufferpos) |