diff --git a/taglib/toolkit/tbytevector.cpp b/taglib/toolkit/tbytevector.cpp index 82aeb05e..3007be66 100644 --- a/taglib/toolkit/tbytevector.cpp +++ b/taglib/toolkit/tbytevector.cpp @@ -166,13 +166,19 @@ namespace TagLib { TIterator itBuffer = it; TIterator itPattern = patternBegin + patternSize - 1; - while(itPattern >= patternBegin && *itBuffer == *itPattern) { - --itBuffer; - --itPattern; - } + while(*itBuffer == *itPattern) + { + if(itPattern == patternBegin) + { + if((itBuffer - dataBegin - offset) % byteAlign == 0) + return (itBuffer - dataBegin); + else + break; + } - if(itPattern < patternBegin && (itBuffer - dataBegin + 1 - offset) % byteAlign == 0) - return (itBuffer - dataBegin + 1); + --itBuffer; + --itPattern; + } } return ByteVector::npos;