Skip to content

Commit 767f4a7

Browse files
committed
auto merge of #15592 : arjantop/rust/bufwriter-write-fix, r=alexcrichton
First condition is not needed and just prevents 0 length writes Fixes #15583
2 parents a5688ad + 30f07e9 commit 767f4a7

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/libstd/io/mem.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,8 +259,8 @@ impl<'a> Writer for BufWriter<'a> {
259259
#[inline]
260260
fn write(&mut self, buf: &[u8]) -> IoResult<()> {
261261
// return an error if the entire write does not fit in the buffer
262-
let max_size = self.buf.len();
263-
if self.pos >= max_size || (self.pos + buf.len()) > max_size {
262+
let cap = if self.pos >= self.buf.len() { 0 } else { self.buf.len() - self.pos };
263+
if buf.len() > cap {
264264
return Err(IoError {
265265
kind: io::OtherIoError,
266266
desc: "Trying to write past end of buffer",
@@ -416,6 +416,8 @@ mod test {
416416
writer.write([1, 2, 3]).unwrap();
417417
writer.write([4, 5, 6, 7]).unwrap();
418418
assert_eq!(writer.tell(), Ok(8));
419+
writer.write([]).unwrap();
420+
assert_eq!(writer.tell(), Ok(8));
419421
}
420422
assert_eq!(buf.as_slice(), &[0, 1, 2, 3, 4, 5, 6, 7]);
421423
}

0 commit comments

Comments
 (0)