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);