diff options
| author | Maxime Coste <mawww@kakoune.org> | 2020-05-28 20:58:46 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2020-05-28 20:58:46 +1000 |
| commit | 109abbeed40c776fdc33bd5c9344b6865122ef6d (patch) | |
| tree | 3b2387c7a14cd026311c1ae9d1803e52d63d611d /src | |
| parent | aad20f6576aefa581a1a108722c347a56935e015 (diff) | |
Fix invalid regions with begin > end being generated
Fixes #3495
Diffstat (limited to 'src')
| -rw-r--r-- | src/highlighters.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/highlighters.cc b/src/highlighters.cc index ecc84481..ac33cf4f 100644 --- a/src/highlighters.cc +++ b/src/highlighters.cc @@ -2131,16 +2131,16 @@ private: auto end_it = matches.find_matching_end(buffer, beg_it->end_coord(), region.value->match_capture() ? beg_it->capture(buffer) : Optional<StringView>{}); - if (end_it == matches.end_matches.end() or end_it->end_coord() >= range.end) + if (end_it == matches.end_matches.end() or end_it->end_coord() >= range.end) // region continue past range end { - regions.push_back({ {beg_it->line, beg_it->begin}, - range.end, - region.key }); + auto begin_coord = beg_it->begin_coord(); + if (begin_coord < range.end) + regions.push_back({begin_coord, range.end, region.key}); break; } auto end_coord = end_it->end_coord(); - regions.push_back({ beg_it->begin_coord(), end_coord, region.key }); + regions.push_back({beg_it->begin_coord(), end_coord, region.key}); // With empty begin and end matches (for example if the regexes // are /"\K/ and /(?=")/), that case can happen, and would |
