diff --git a/alib2algo/src/arbology/exact/ExactPatternMatch.cpp b/alib2algo/src/arbology/exact/ExactPatternMatch.cpp index 5026d2f6d2cec241aa4b07efafcf0553702c19a9..2d49e429330afaa4d83c553985d24292fd452b09 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 ( ) )