Skip to content

Commit 6ea8222

Browse files
committed
Never return an error after a partial write
If LineWriter fails to flush, return the number of bytes written instead of an error. Fixes #32085
1 parent 388ccda commit 6ea8222

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/libstd/io/buffered.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -762,8 +762,10 @@ impl<W: Write> Write for LineWriter<W> {
762762
match memchr::memrchr(b'\n', buf) {
763763
Some(i) => {
764764
let n = try!(self.inner.write(&buf[..i + 1]));
765-
if n != i + 1 { return Ok(n) }
766-
try!(self.inner.flush());
765+
if n != i + 1 || self.inner.flush().is_err() {
766+
// Do not return errors on partial writes.
767+
return Ok(n);
768+
}
767769
self.inner.write(&buf[i + 1..]).map(|i| n + i)
768770
}
769771
None => self.inner.write(buf),

0 commit comments

Comments
 (0)