Skip to content

Commit 3492f59

Browse files
committed
---
yaml --- r: 273737 b: refs/heads/beta c: 6489fb4 h: refs/heads/master i: 273735: 5c3d49e
1 parent 6337860 commit 3492f59

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ refs/tags/0.9: 36870b185fc5f5486636d4515f0e22677493f225
2323
refs/tags/0.10: ac33f2b15782272ae348dbd7b14b8257b2148b5a
2424
refs/tags/0.11.0: e1247cb1d0d681be034adb4b558b5a0c0d5720f9
2525
refs/tags/0.12.0: f0c419429ef30723ceaf6b42f9b5a2aeb5d2e2d1
26-
refs/heads/beta: 373f93a629313dccd1858e403e99fb25709947a4
26+
refs/heads/beta: 6489fb40deeb7ac62ca11439f96fdb4124c6b94f
2727
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
2828
refs/heads/tmp: e06d2ad9fcd5027bcaac5b08fc9aa39a49d0ecd3
2929
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f

branches/beta/src/libstd/io/mod.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1446,7 +1446,7 @@ impl<T: Read, U: Read> Read for Chain<T, U> {
14461446
impl<T: BufRead, U: BufRead> BufRead for Chain<T, U> {
14471447
fn fill_buf(&mut self) -> Result<&[u8]> {
14481448
if !self.done_first {
1449-
match try!(self.first.fill_buf()) {
1449+
match self.first.fill_buf()? {
14501450
buf if buf.len() == 0 => { self.done_first = true; }
14511451
buf => return Ok(buf),
14521452
}
@@ -1865,6 +1865,36 @@ mod tests {
18651865
assert_eq!(0, R.take(0).read(&mut buf).unwrap());
18661866
}
18671867

1868+
fn cmp_bufread<Br1: BufRead, Br2: BufRead>(mut br1: Br1, mut br2: Br2, exp: &[u8]) {
1869+
let mut cat = Vec::new();
1870+
loop {
1871+
let consume = {
1872+
let buf1 = br1.fill_buf().unwrap();
1873+
let buf2 = br2.fill_buf().unwrap();
1874+
let minlen = if buf1.len() < buf2.len() { buf1.len() } else { buf2.len() };
1875+
assert_eq!(buf1[..minlen], buf2[..minlen]);
1876+
cat.extend_from_slice(&buf1[..minlen]);
1877+
minlen
1878+
};
1879+
if consume == 0 {
1880+
break;
1881+
}
1882+
br1.consume(consume);
1883+
br2.consume(consume);
1884+
}
1885+
assert_eq!(br1.fill_buf().unwrap().len(), 0);
1886+
assert_eq!(br2.fill_buf().unwrap().len(), 0);
1887+
assert_eq!(&cat[..], &exp[..])
1888+
}
1889+
1890+
#[test]
1891+
fn chain_bufread() {
1892+
let testdata = b"ABCDEFGHIJKL";
1893+
let chain1 = (&testdata[..3]).chain(&testdata[3..6]).chain(&testdata[6..9]).chain(&testdata[9..]);
1894+
let chain2 = (&testdata[..4]).chain(&testdata[4..8]).chain(&testdata[8..]);
1895+
cmp_bufread(chain1, chain2, &testdata[..]);
1896+
}
1897+
18681898
#[bench]
18691899
fn bench_read_to_end(b: &mut test::Bencher) {
18701900
b.iter(|| {

0 commit comments

Comments
 (0)