@@ -464,11 +464,11 @@ template <typename CHAR = char, typename OFFSET = std::uint32_t, typename RESULT
464464 * \return Number of tokens which are the same on both lines from the end.
465465 */
466466 std::size_t getCommonLineSuffixLength (
467- const line_t &line1, const line_t &line2, TokenComparator<CHAR, OFFSET> &comparator) const
467+ const line_t &line1, const line_t &line2, TokenComparator<CHAR, OFFSET> &comparator, std:: size_t prefixLen = 0 ) const
468468 {
469469 std::size_t idx1 = line1.size () - 1 , idx2 = line2.size () - 1 ;
470470 std::size_t len = 0 ;
471- while (len < line1.size () && len < line2.size () &&
471+ while (( len + prefixLen) < line1.size () && ( len + prefixLen) < line2.size () &&
472472 comparator.compare (line1.getTokenCStr (idx1),
473473 line1.getTokenLength (idx1),
474474 line2.getTokenCStr (idx2),
@@ -606,7 +606,7 @@ template <typename CHAR = char, typename OFFSET = std::uint32_t, typename RESULT
606606 std::size_t prefixLen = getCommonLinePrefixLength (line1, line2, comparator);
607607 if (prefixLen == line1.size () && prefixLen == line2.size ()) return 0 ; // both lines are identical
608608
609- std::size_t suffixLen = getCommonLineSuffixLength (line1, line2, comparator);
609+ std::size_t suffixLen = getCommonLineSuffixLength (line1, line2, comparator, prefixLen );
610610 lineview_t lineView1 (line1, prefixLen, line1.size () - prefixLen - suffixLen);
611611 lineview_t lineView2 (line2, prefixLen, line2.size () - prefixLen - suffixLen);
612612
0 commit comments