]> granicus.if.org Git - taglib/commitdiff
Fixed an MSVC specific runtime error only in debug mode
authorTsuda Kageyu <tsuda.kageyu@gmail.com>
Wed, 17 Jul 2013 14:35:41 +0000 (23:35 +0900)
committerTsuda Kageyu <tsuda.kageyu@gmail.com>
Wed, 17 Jul 2013 14:35:41 +0000 (23:35 +0900)
taglib/toolkit/tbytevector.cpp

index 0ea7517c67d2a1ffa53b2443e3eb21c218486b0e..ddc3d4f43f284008ad6182ae37a03bc7493cc290 100644 (file)
@@ -156,9 +156,8 @@ int findVector(
   for(size_t i = 0; i < patternSize - 1; ++i)
     lastOccurrence[static_cast<uchar>(*(patternBegin + i))] = patternSize - i - 1;
 
-  for(TIterator it = dataBegin + patternSize - 1 + offset;
-    it < dataEnd;
-    it += lastOccurrence[static_cast<uchar>(*it)])
+  TIterator it = dataBegin + patternSize - 1 + offset;
+  while(true)
   {
     TIterator itBuffer = it;
     TIterator itPattern = patternBegin + patternSize - 1;
@@ -176,6 +175,12 @@ int findVector(
       --itBuffer;
       --itPattern;
     }
+
+    const size_t step = lastOccurrence[static_cast<uchar>(*it)];
+    if(dataEnd - step <= it)
+      break;
+
+    it += step;
   }
 
   return -1;