diff --git a/src/controller.rs b/src/controller.rs index 259a8a6f..e8b32bc8 100644 --- a/src/controller.rs +++ b/src/controller.rs @@ -98,7 +98,9 @@ impl<'b> Controller<'b> { }; if let Err(error) = result { match writer { - OutputHandle::FmtWrite(writer) => todo!(), + // It doesn't make much sense to send errors straight to stderr if the user + // provided their own buffer, so we just return it. + OutputHandle::FmtWrite(_) => return Err(error), OutputHandle::IoWrite(ref mut writer) => { if attached_to_pager { handle_error(&error, writer); diff --git a/src/printer.rs b/src/printer.rs index deeebe49..a317bdcc 100644 --- a/src/printer.rs +++ b/src/printer.rs @@ -134,7 +134,16 @@ impl<'a> Printer for SimplePrinter<'a> { } else { match handle { OutputHandle::IoWrite(handle) => handle.write_all(line_buffer)?, - OutputHandle::FmtWrite(handle) => todo!(), + OutputHandle::FmtWrite(handle) => { + write!( + handle, + "{}", + std::str::from_utf8(line_buffer).map_err(|_| Error::Msg( + "encountered invalid utf8 while printing to non-io buffer" + .to_string() + ))? + )?; + } } }; }