From de70e02d6aa72807ee2ea9f571216cb3af6d56be Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Tue, 29 Sep 2015 13:52:55 +0200
Subject: [PATCH] fix exact pattern match

---
 alib2algo/src/arbology/exact/ExactPatternMatch.cpp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
index 5026d2f6d2..2d49e42933 100644
--- a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
+++ b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp
@@ -101,7 +101,7 @@ std::set < unsigned > ExactPatternMatch::match ( const tree::PrefixRankedTree &
 		unsigned offset = i;
 
 		for ( ; j < pattern.getContent ( ).size ( ); j++ ) {
-			if ( pattern.getContent ( )[j] == subject.getContent ( )[offset + j] )
+			if ( pattern.getContent ( )[j] == subject.getContent ( )[offset] )
 				offset++;
 			else if ( pattern.getContent ( )[j] == pattern.getSubtreeWildcard ( ) )
 				offset = subjectSubtreeJumpTable[offset];
@@ -128,12 +128,14 @@ std::set < unsigned > ExactPatternMatch::match ( const tree::PrefixRankedBarTree
 		unsigned offset = i;
 
 		for ( ; j < pattern.getContent ( ).size ( ); j++ ) {
-			if ( pattern.getContent ( )[j] == subject.getContent ( )[offset + j] )
+			if ( pattern.getContent ( )[j] == subject.getContent ( )[offset] ) {
 				offset++;
-			else if ( pattern.getContent ( )[j] == pattern.getSubtreeWildcard ( ) )
+			} else if ( pattern.getContent ( )[j] == pattern.getSubtreeWildcard ( ) ) {
+				j++;
 				offset = subjectSubtreeJumpTable[offset];
-			else
+			} else {
 				break;
+			}
 		}
 
 		if ( j == pattern.getContent ( ).size ( ) )
-- 
GitLab