diff --git a/taglib/mpeg/mpegfile.cpp b/taglib/mpeg/mpegfile.cpp index 5f953ccb..0ac87d10 100644 --- a/taglib/mpeg/mpegfile.cpp +++ b/taglib/mpeg/mpegfile.cpp @@ -434,18 +434,18 @@ long MPEG::File::firstFrameOffset() long position = 0; if(ID3v2Tag()) { + position = d->ID3v2Location + ID3v2Tag()->header()->completeTagSize(); // Skip duplicate ID3v2 tags. // Workaround for some faulty files that have duplicate ID3v2 tags. // Combination of EAC and LAME creates such files when configured incorrectly. - position = d->ID3v2Location + ID3v2Tag()->header()->completeTagSize(); - long location; while((location = findID3v2(position)) >= 0) { - ID3v2::Tag dupTag(this, location); - position = location + dupTag.header()->completeTagSize(); + seek(location); + const ID3v2::Header header(readBlock(ID3v2::Header::size())); + position = location + header.completeTagSize(); debug("MPEG::File::firstFrameOffset() - Duplicate ID3v2 tag found."); }