diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 88fd4186e0a2a..e205cb6f18dbc 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -345,7 +345,11 @@ fn append_to_string(buf: &mut String, f: F) -> Result fn read_to_end(r: &mut R, buf: &mut Vec) -> Result { let start_len = buf.len(); let mut len = start_len; - let mut new_write_size = 16; + let mut new_write_size = if buf.capacity() > 16 { + buf.capacity() - buf.len() + } else { + 16 + }; let ret; loop { if len == buf.len() {