From ba98628919c97a00e8e597bdebd6af3e9210f643 Mon Sep 17 00:00:00 2001 From: Tsuda Kageyu Date: Wed, 1 Feb 2017 14:23:03 +0900 Subject: [PATCH] Avoid searching the same area twice in MPEG::File::previousFrameOffset(). --- taglib/mpeg/mpegfile.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/taglib/mpeg/mpegfile.cpp b/taglib/mpeg/mpegfile.cpp index b8ff40dd..74bf779b 100644 --- a/taglib/mpeg/mpegfile.cpp +++ b/taglib/mpeg/mpegfile.cpp @@ -373,15 +373,13 @@ long MPEG::File::previousFrameOffset(long position) ByteVector frameSyncBytes(2, '\0'); while(position > 0) { - const long size = std::min(position, bufferSize()); - position -= size; + const long bufferLength = std::min(position, bufferSize()); + position -= bufferLength; seek(position); - const ByteVector buffer = readBlock(bufferSize()); - if(buffer.isEmpty()) - return -1; + const ByteVector buffer = readBlock(bufferLength); - for(int i = buffer.size() - 1; i >= 0; i--) { + for(int i = buffer.size() - 1; i >= 0; --i) { frameSyncBytes[1] = frameSyncBytes[0]; frameSyncBytes[0] = buffer[i]; if(isFrameSync(frameSyncBytes)) { -- 2.40.0