From 232f0b3357ad5799b4d7bfc70a27be075d6bc14e Mon Sep 17 00:00:00 2001
From: Tinny Ng <tng@apache.org>
Date: Fri, 26 Jul 2002 18:22:21 +0000
Subject: [PATCH] =?UTF-8?q?[Bug=2010337]=20XMLString::patternMatch=20doesn?=
 =?UTF-8?q?'t=20find=20pattern=20in=20particular=20context.=20=20Fixed=20b?=
 =?UTF-8?q?y=20Jo=EF=BF=BD=20St-Germain.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174066 13f79535-47bb-0310-9956-ffa450edef68
---
 src/xercesc/util/XMLString.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/xercesc/util/XMLString.cpp b/src/xercesc/util/XMLString.cpp
index 905fb1fa8..7302d2b41 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
-- 
GitLab