aboutsummaryrefslogtreecommitdiffstats
path: root/taglib/riff
diff options
context:
space:
mode:
authorTsuda Kageyu <tsuda.kageyu@gmail.com>2016-10-28 14:22:50 +0900
committerTsuda Kageyu <tsuda.kageyu@gmail.com>2016-10-28 14:22:50 +0900
commit65a24bbc512eb3c2e1396523dd2f68ecaea0507d (patch)
tree53eae3f177e1ab4fdb3d9a0ca8ed803e1a438199 /taglib/riff
parent711b35cc6e23d72f4a04a19ed3ce7aa6e6c9d342 (diff)
Remove some useless seek()/tell() from RIFF::File.
Diffstat (limited to 'taglib/riff')
-rw-r--r--taglib/riff/rifffile.cpp19
1 files 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<long long>(tell()) + chunkSize > length()) {
+ if(static_cast<long long>(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;