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