Skip to content

Commit 15e078b

Browse files
committed
Fixing a bug in token judge.
1 parent 20fe9e2 commit 15e078b

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

judges/recodex_token_judge/comparator.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

judges/recodex_token_judge/reader.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ template <typename CHAR = char, typename OFFSET = std::uint32_t> class Reader
8383

8484
public:
8585
Line(Reader<CHAR, OFFSET> &reader, offset_t lineNumber, const char_t *rawData, offset_t rawLength = 0)
86-
: mReader(reader), mLineNumber(lineNumber), mRawData(rawData), mRawLength(rawLength)
86+
: mReader(reader), mLineNumber(lineNumber), mTokens(), mRawData(rawData), mRawLength(rawLength)
8787
{
8888
}
8989

0 commit comments

Comments
 (0)