Allow writes of length 0 to a full buffer
This commit is contained in:
parent
8bbf598d50
commit
30f07e9067
1 changed files with 4 additions and 2 deletions
|
|
@ -259,8 +259,8 @@ impl<'a> Writer for BufWriter<'a> {
|
|||
#[inline]
|
||||
fn write(&mut self, buf: &[u8]) -> IoResult<()> {
|
||||
// return an error if the entire write does not fit in the buffer
|
||||
let max_size = self.buf.len();
|
||||
if self.pos >= max_size || (self.pos + buf.len()) > max_size {
|
||||
let cap = if self.pos >= self.buf.len() { 0 } else { self.buf.len() - self.pos };
|
||||
if buf.len() > cap {
|
||||
return Err(IoError {
|
||||
kind: io::OtherIoError,
|
||||
desc: "Trying to write past end of buffer",
|
||||
|
|
@ -416,6 +416,8 @@ mod test {
|
|||
writer.write([1, 2, 3]).unwrap();
|
||||
writer.write([4, 5, 6, 7]).unwrap();
|
||||
assert_eq!(writer.tell(), Ok(8));
|
||||
writer.write([]).unwrap();
|
||||
assert_eq!(writer.tell(), Ok(8));
|
||||
}
|
||||
assert_eq!(buf.as_slice(), &[0, 1, 2, 3, 4, 5, 6, 7]);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue