Avoid possible iterators' out-of-range

This commit is contained in:
Tsuda Kageyu 2013-04-03 09:21:48 +09:00
parent 86cee56f74
commit 27115557a0

View File

@ -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;