From 65a24bbc512eb3c2e1396523dd2f68ecaea0507d Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Fri, 28 Oct 2016 14:22:50 +0900 Subject: [PATCH] Remove some useless seek()/tell() from RIFF::File. --- taglib/riff/rifffile.cpp | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/taglib/riff/rifffile.cpp b/taglib/riff/rifffile.cpp index f9d33e10..7ac2c034 100644 --- a/taglib/riff/rifffile.cpp +++ b/taglib/riff/rifffile.cpp @@ -292,7 +292,6 @@ void RIFF::File::read() d->size = readBlock(4).toUInt(bigEndian); offset += 8; - seek(offset); // + 8: chunk header at least, fix for additional junk bytes while(offset + 8 <= length()) { @@ -307,28 +306,24 @@ void RIFF::File::read() break; } - if(static_cast(tell()) + chunkSize > length()) { + if(static_cast(offset) + 8 + chunkSize > length()) { debug("RIFF::File::read() -- Chunk '" + chunkName + "' has invalid size (larger than the file size)"); setValid(false); break; } - offset += 8; - Chunk chunk; - chunk.name = chunkName; - chunk.size = chunkSize; - chunk.offset = offset; + chunk.name = chunkName; + chunk.size = chunkSize; + chunk.offset = offset + 8; + chunk.padding = 0; - offset += chunk.size; - - seek(offset); + offset = chunk.offset + chunk.size; // Check padding - chunk.padding = 0; - if(offset & 1) { + seek(offset); const ByteVector iByte = readBlock(1); if(iByte.size() == 1 && iByte[0] == '\0') { chunk.padding = 1; -- 2.40.0