From 7a1756a26f4a67656034e70c5ab81f8526617a32 Mon Sep 17 00:00:00 2001 From: wangqr Date: Wed, 11 Sep 2019 11:16:51 -0400 Subject: [PATCH] In tagless_find_helper only tag before start should be ignored The search result is irrelevant to which tag we should ignore Fix wangqr/Aegisub#17 --- libaegisub/common/util.cpp | 2 +- tests/tests/ifind.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libaegisub/common/util.cpp b/libaegisub/common/util.cpp index e92d14776..45c01ca44 100644 --- a/libaegisub/common/util.cpp +++ b/libaegisub/common/util.cpp @@ -173,7 +173,7 @@ void tagless_find_helper::map_range(size_t &s, size_t &e) { // match for (auto const& block : blocks) { // Any blocks before start are irrelevant as they're included in `start` - if (block.second < s) continue; + if (block.second <= start) continue; // Skip over blocks at the very beginning of the match // < should only happen if the cursor was within an override block // when the user started a search diff --git a/tests/tests/ifind.cpp b/tests/tests/ifind.cpp index e165b9bbe..fea7a4fa9 100644 --- a/tests/tests/ifind.cpp +++ b/tests/tests/ifind.cpp @@ -84,6 +84,8 @@ TEST(lagi_skip_tags, tag_stripping) { EXPECT_EQ("abc", helper.strip_tags("a{}bc", 0)); EXPECT_EQ("abc", helper.strip_tags("abc{}", 0)); EXPECT_EQ("abc", helper.strip_tags("{}a{}bc{}", 0)); + EXPECT_EQ("rmofmat", helper.strip_tags("{\\i1}rmofmat{\\i}", 0)); + EXPECT_EQ("rm of mat", helper.strip_tags("{\\i1}rm of mat{\\i}", 0)); EXPECT_EQ("abc", helper.strip_tags("{}abc", 1)); EXPECT_EQ("abc", helper.strip_tags("{}abc", 2)); @@ -112,6 +114,8 @@ TEST(lagi_skip_tags, range_mapping) { EXPECT_RANGE("{cc}ab", 0, 1, 2, 5, 6); EXPECT_RANGE("{cc}ab{cc}b", 0, 1, 2, 5, 6); EXPECT_RANGE("{cc}ab{cc}b", 0, 1, 3, 5, 11); + EXPECT_RANGE("{\\i1}rmofmat{\\i}", 0, 4, 7, 9, 12); + EXPECT_RANGE("{\\i1}rm of mat{\\i}", 0, 6, 9, 11, 14); EXPECT_RANGE("{cc}ab{cc}b", 3, 1, 3, 5, 11); EXPECT_RANGE("{cc}ab{cc}b", 4, 1, 3, 5, 11);