diff --git a/src/xercesc/util/XMLString.cpp b/src/xercesc/util/XMLString.cpp index 905fb1fa80bec1d5990b14cca54e091806dc3be7..7302d2b41798a49e52945aaebf5e269b9a6b3ea6 100644 --- a/src/xercesc/util/XMLString.cpp +++ b/src/xercesc/util/XMLString.cpp @@ -1180,14 +1180,19 @@ int XMLString::patternMatch( XMLCh* const toSearch XMLCh* srcPtr = toSearch; const int patnLen = XMLString::stringLen(pattern); int patnIndex = 0; + bool patnMatch; while (*srcPtr) { - if (*srcPtr++ != pattern[patnIndex++]) + patnMatch = (*srcPtr++ == pattern[patnIndex++]); + + if (!patnMatch) { patnIndex = 0; + patnMatch = (*srcPtr == pattern[patnIndex++]); } - else + + if (patnMatch) { if (patnIndex == patnLen) // full pattern match found