Fix search freezing Alacritty

This resolves a regression introduced in 530de00 where searching would
cause a deadlock when the viewport is at the bottom of the scrollback
and a match ends in the last cell.

Fixes #4800.
This commit is contained in:
Christian Duerr 2021-02-18 20:27:52 +00:00 committed by GitHub
parent 6f1ddf7010
commit 3dafec076b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 3 deletions

View File

@ -469,16 +469,25 @@ impl<'a, T> Iterator for RegexIter<'a, T> {
type Item = Match;
fn next(&mut self) -> Option<Self::Item> {
if self.done {
return None;
}
// Since the end itself might be a single cell match, we search one more time.
if self.point == self.end {
self.done = true;
} else if self.done {
return None;
}
let regex_match = self.next_match()?;
self.point = *regex_match.end();
self.skip();
if self.point == self.end {
// Stop when the match terminates right on the end limit.
self.done = true;
} else {
// Move the new search origin past the match.
self.skip();
}
Some(regex_match)
}