Fix read-ahead bug.

Re-ahead 8 bytes rather than 3 to ensure large blocks import fine.
This commit is contained in:
Gav Wood 2016-06-15 21:31:19 +02:00
parent 549647b6f2
commit 9603597da7

View File

@ -398,7 +398,7 @@ fn execute_import(conf: Configuration) {
Box::new(::std::io::stdin()) Box::new(::std::io::stdin())
}; };
let mut first_bytes: Bytes = vec![0; 3]; let mut first_bytes: Bytes = vec![0; 8];
let mut first_read = 0; let mut first_read = 0;
let format = match conf.args.flag_format { let format = match conf.args.flag_format {
@ -438,13 +438,13 @@ fn execute_import(conf: Configuration) {
match format { match format {
DataFormat::Binary => { DataFormat::Binary => {
loop { loop {
let mut bytes: Bytes = if first_read > 0 {first_bytes.clone()} else {vec![0; 3]}; let mut bytes: Bytes = if first_read > 0 {first_bytes.clone()} else {vec![0; 8]};
let n = if first_read > 0 {first_read} else {instream.read(&mut(bytes[..])).unwrap_or_else(|_| die!("Error reading from the file/stream."))}; let n = if first_read > 0 {first_read} else {instream.read(&mut(bytes[..])).unwrap_or_else(|_| die!("Error reading from the file/stream."))};
if n == 0 { break; } if n == 0 { break; }
first_read = 0; first_read = 0;
let s = PayloadInfo::from(&(bytes[..])).unwrap_or_else(|e| die!("Invalid RLP in the file/stream: {:?}", e)).total(); let s = PayloadInfo::from(&(bytes[..])).unwrap_or_else(|e| die!("Invalid RLP in the file/stream: {:?}", e)).total();
bytes.resize(s, 0); bytes.resize(s, 0);
instream.read_exact(&mut(bytes[3..])).unwrap_or_else(|_| die!("Error reading from the file/stream.")); instream.read_exact(&mut(bytes[8..])).unwrap_or_else(|_| die!("Error reading from the file/stream."));
do_import(bytes); do_import(bytes);
} }
} }