File tree Expand file tree Collapse file tree 3 files changed +29
-1
lines changed Expand file tree Collapse file tree 3 files changed +29
-1
lines changed Original file line number Diff line number Diff line change @@ -357,6 +357,28 @@ where
357357 self . pos += n as u64 ;
358358 Ok ( ( ) )
359359 }
360+
361+ fn read_to_end ( & mut self , buf : & mut Vec < u8 > ) -> io:: Result < usize > {
362+ let content = self . remaining_slice ( ) ;
363+ let len = content. len ( ) ;
364+ buf. try_reserve ( len) ?;
365+ buf. extend_from_slice ( content) ;
366+ self . pos += len as u64 ;
367+
368+ Ok ( len)
369+ }
370+
371+ fn read_to_string ( & mut self , buf : & mut String ) -> io:: Result < usize > {
372+ let content = crate :: str:: from_utf8 ( self . remaining_slice ( ) ) . map_err ( |_| {
373+ io:: const_io_error!( ErrorKind :: InvalidData , "stream did not contain valid UTF-8" )
374+ } ) ?;
375+ let len = content. len ( ) ;
376+ buf. try_reserve ( len) ?;
377+ buf. push_str ( content) ;
378+ self . pos += len as u64 ;
379+
380+ Ok ( len)
381+ }
360382}
361383
362384#[ stable( feature = "rust1" , since = "1.0.0" ) ]
Original file line number Diff line number Diff line change @@ -315,8 +315,9 @@ impl Read for &[u8] {
315315 let content = str:: from_utf8 ( self ) . map_err ( |_| {
316316 io:: const_io_error!( ErrorKind :: InvalidData , "stream did not contain valid UTF-8" )
317317 } ) ?;
318- buf. push_str ( content) ;
319318 let len = self . len ( ) ;
319+ buf. try_reserve ( len) ?;
320+ buf. push_str ( content) ;
320321 * self = & self [ len..] ;
321322 Ok ( len)
322323 }
@@ -470,6 +471,7 @@ impl<A: Allocator> Read for VecDeque<u8, A> {
470471 let string = str:: from_utf8 ( content) . map_err ( |_| {
471472 io:: const_io_error!( ErrorKind :: InvalidData , "stream did not contain valid UTF-8" )
472473 } ) ?;
474+ buf. try_reserve ( len) ?;
473475 buf. push_str ( string) ;
474476 self . clear ( ) ;
475477 Ok ( len)
Original file line number Diff line number Diff line change @@ -439,6 +439,10 @@ impl Read for ChildStderr {
439439 fn is_read_vectored ( & self ) -> bool {
440440 self . inner . is_read_vectored ( )
441441 }
442+
443+ fn read_to_end ( & mut self , buf : & mut Vec < u8 > ) -> io:: Result < usize > {
444+ self . inner . read_to_end ( buf)
445+ }
442446}
443447
444448impl AsInner < AnonPipe > for ChildStderr {
You can’t perform that action at this time.
0 commit comments