treat Utf8Error::valid_up_to as an offset form self.pos, which it is (#2374)
This commit is contained in:
@@ -192,7 +192,7 @@ impl<R: Read> CharRead for CharReader<R> {
|
|||||||
} else if self.pos >= self.buf.len() {
|
} else if self.pos >= self.buf.len() {
|
||||||
return None;
|
return None;
|
||||||
} else if self.buf.len() - self.pos >= 4 && self.pos < e.valid_up_to() {
|
} else if self.buf.len() - self.pos >= 4 && self.pos < e.valid_up_to() {
|
||||||
return match str::from_utf8(&self.buf[self.pos..e.valid_up_to()]) {
|
return match str::from_utf8(&self.buf[self.pos..self.pos + e.valid_up_to()]) {
|
||||||
Ok(s) => {
|
Ok(s) => {
|
||||||
let mut chars = s.chars();
|
let mut chars = s.chars();
|
||||||
let c = chars.next().unwrap();
|
let c = chars.next().unwrap();
|
||||||
@@ -200,7 +200,7 @@ impl<R: Read> CharRead for CharReader<R> {
|
|||||||
Some(Ok(c))
|
Some(Ok(c))
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
let badbytes = self.buf[self.pos..e.valid_up_to()].to_vec();
|
let badbytes = self.buf[self.pos..self.pos + e.valid_up_to()].to_vec();
|
||||||
|
|
||||||
Some(Err(io::Error::new(
|
Some(Err(io::Error::new(
|
||||||
io::ErrorKind::InvalidData,
|
io::ErrorKind::InvalidData,
|
||||||
|
|||||||
Reference in New Issue
Block a user