diff --git a/src/formatters/custom.rs b/src/formatters/custom.rs index baa51ae..115438b 100644 --- a/src/formatters/custom.rs +++ b/src/formatters/custom.rs @@ -80,8 +80,8 @@ where let mut stderr = child.stderr.take().expect("Failed to take stdout"); let mut wtr = Writer::from_writer(stdin); - let mut captured_out = Vec::new(); - let mut captured_err = Vec::new(); + let mut captured_out = String::new(); + let mut captured_err = String::new(); for entry in entries { // write to process' stdin @@ -92,14 +92,15 @@ where entry.note.unwrap_or_else(|| "".into()), entry.sheet, ])?; + wtr.flush()?; // read process' stdout and stderr - stdout.read_to_end(&mut captured_out)?; - write!(out, "{}", String::from_utf8_lossy(&captured_out))?; + stdout.read_to_string(&mut captured_out)?; + write!(out, "{}", &captured_out)?; captured_out.clear(); - stderr.read_to_end(&mut captured_err)?; - write!(err, "{}", String::from_utf8_lossy(&captured_err))?; + stderr.read_to_string(&mut captured_err)?; + write!(err, "{}", &captured_err)?; captured_err.clear(); }