From e4d1bda5e40a219a088fd391e195106fab516af9 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Wed, 25 Sep 2002 12:34:21 +0000 Subject: [PATCH] For some strange reason, getsonglength() couldn't handle 800Kbyte ID3V2 tags :-) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2413 a1c6a512-1295-4272-9138-f99709370657 --- firmware/id3.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/firmware/id3.c b/firmware/id3.c index a4406616c3..d71ba2f4dd 100644 --- a/firmware/id3.c +++ b/firmware/id3.c @@ -401,6 +401,7 @@ static int getsonglength(int fd, struct mp3entry *entry) int frequency; int chmode; int bytecount; + int bytelimit; int bittable; /* which bitrate table to use */ bool header_found = false; @@ -421,6 +422,7 @@ static int getsonglength(int fd, struct mp3entry *entry) /* Loop trough file until we find a frame header */ bytecount = entry->id3v2len - 1; + bytelimit = entry->id3v2len + 0x20000; restart: do { header <<= 8; @@ -430,7 +432,7 @@ static int getsonglength(int fd, struct mp3entry *entry) /* Quit if we haven't found a valid header within 128K */ bytecount++; - if(bytecount > 0x20000) + if(bytecount > bytelimit) return 0; } while(!mp3frameheader(header));