ui: fix memory overflow in WordBreakIter

embed
Manos Pitsidianakis 2019-05-07 01:59:08 +03:00
parent 35bac364b1
commit f1734048c8
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
1 changed files with 5 additions and 4 deletions

View File

@ -52,8 +52,8 @@ impl<'s> Iterator for WordBreakIter<'s> {
}
self.input = self.input.trim_start_matches(|c| c == ' ');
if self.input.starts_with('\n') {
let ret = &self.input[0..];
self.input = &self.input["\n".len()..];
let ret = &self.input[0..0];
self.input = &self.input[1..];
return Some(ret);
}
if let Some(next_idx) = self.input.as_bytes().iter().position(|&c| c == b'\n') {
@ -71,7 +71,7 @@ impl<'s> Iterator for WordBreakIter<'s> {
if let Some(next_idx) = graphemes.iter().rposition(|(_, g)| *g == " ") {
let next_idx = graphemes[next_idx].0;
let ret = &self.input[..next_idx];
self.input = &self.input[next_idx + 1..];
self.input = &self.input[next_idx..];
return Some(ret);
} else {
let ret = &self.input[..self.width];
@ -79,8 +79,9 @@ impl<'s> Iterator for WordBreakIter<'s> {
return Some(ret);
}
} else {
/* graphemes.len() < width */
let ret = self.input;
self.input = &self.input[self.input.len() - 1..];
self.input = &self.input[0..0];
return Some(ret);
}
}