File tree Expand file tree Collapse file tree 1 file changed +8
-10
lines changed Expand file tree Collapse file tree 1 file changed +8
-10
lines changed Original file line number Diff line number Diff line change @@ -1436,33 +1436,31 @@ pub trait Buffer: Reader {
1436
1436
fn read_until ( & mut self , byte : u8 ) -> IoResult < Vec < u8 > > {
1437
1437
let mut res = Vec :: new ( ) ;
1438
1438
1439
- let mut used;
1440
1439
loop {
1441
- {
1440
+ let ( done , used ) = {
1442
1441
let available = match self . fill_buf ( ) {
1443
1442
Ok ( n) => n,
1444
1443
Err ( ref e) if res. len ( ) > 0 && e. kind == EndOfFile => {
1445
- used = 0 ;
1446
- break
1444
+ return Ok ( res) ;
1447
1445
}
1448
1446
Err ( e) => return Err ( e)
1449
1447
} ;
1450
1448
match available. iter ( ) . position ( |& b| b == byte) {
1451
1449
Some ( i) => {
1452
1450
res. push_all ( & available[ ..( i + 1 ) ] ) ;
1453
- used = i + 1 ;
1454
- break
1451
+ ( true , i + 1 )
1455
1452
}
1456
1453
None => {
1457
1454
res. push_all ( available) ;
1458
- used = available. len ( ) ;
1455
+ ( false , available. len ( ) )
1459
1456
}
1460
1457
}
1458
+ } ;
1459
+ buffer. consume ( used) ;
1460
+ if done {
1461
+ return Ok ( res) ;
1461
1462
}
1462
- self . consume ( used) ;
1463
1463
}
1464
- self . consume ( used) ;
1465
- Ok ( res)
1466
1464
}
1467
1465
1468
1466
/// Reads the next utf8-encoded character from the underlying stream.
You can’t perform that action at this time.
0 commit comments