Skip to content

Commit e7b01d2

Browse files
authored
Fix tokio::bufread::generic::Decoder::do_poll_read impl
Signed-off-by: Jiahao XU <[email protected]>
1 parent 2d57a18 commit e7b01d2

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

src/tokio/bufread/generic/decoder.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,20 +84,17 @@ impl<R: AsyncBufRead, D: Decode> Decoder<R, D> {
8484
State::Flushing
8585
} else {
8686
let mut input = PartialBuffer::new(input);
87-
let done = this.decoder.decode(&mut input, output).or_else(|err| {
88-
// ignore the first error, occurs when input is empty
89-
// but we need to run decode to flush
90-
if first {
91-
Ok(false)
92-
} else {
93-
Err(err)
87+
let done = match this.decoder.decode(&mut input, output) {
88+
Ok(done) => {
89+
this.reader.as_mut().consume(input.written().len());
90+
done
9491
}
95-
})?;
92+
Err(err) if first => false,
93+
Err(err) => return Err(err),
94+
};
9695

9796
first = false;
9897

99-
let len = input.written().len();
100-
this.reader.as_mut().consume(len);
10198
if done {
10299
State::Flushing
103100
} else {

0 commit comments

Comments
 (0)