From 96f5c9f4349d2933bfdd12c4ece1e015fe0ab1c0 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 4 Aug 2021 15:49:57 +0200 Subject: [PATCH] Repair accidentally-dropped-buffer error --- .../rust/preserves-tools/src/bin/preserves-tool.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/implementations/rust/preserves-tools/src/bin/preserves-tool.rs b/implementations/rust/preserves-tools/src/bin/preserves-tool.rs index 4046d4c..1c17d84 100644 --- a/implementations/rust/preserves-tools/src/bin/preserves-tool.rs +++ b/implementations/rust/preserves-tools/src/bin/preserves-tool.rs @@ -215,6 +215,7 @@ impl io::Read for RollingBuffer { fn convert(c: Convert) -> io::Result<()> { let mut r = RollingBuffer::new(io::stdin()); + let mut source = IOBinarySource::new(&mut r); let mut count = 0; let mut w: Box io::Result<()>> = match c.output_format { OutputFormat::Text => { @@ -235,7 +236,7 @@ fn convert(c: Convert) -> io::Result<()> { }; loop { let is_text = { - let peek_buf = r.peek_buf()?; + let peek_buf = source.read.peek_buf()?; if peek_buf.is_empty() { return Ok(()); } @@ -248,7 +249,7 @@ fn convert(c: Convert) -> io::Result<()> { InputFormat::Binary => return Err(io::Error::new( io::ErrorKind::InvalidData, "Expected binary input, saw text input")), } - TextReader::new(&mut IOBinarySource::new(&mut r), ViaCodec::new(IOValueDomainCodec)) + TextReader::new(&mut source, ViaCodec::new(IOValueDomainCodec)) .next(c.annotations.into())? } else { match c.input_format { @@ -256,7 +257,7 @@ fn convert(c: Convert) -> io::Result<()> { InputFormat::Text => return Err(io::Error::new( io::ErrorKind::InvalidData, "Expected text input, saw binary input")), } - PackedReader::new(&mut IOBinarySource::new(&mut r), IOValueDomainCodec) + PackedReader::new(&mut source, IOValueDomainCodec) .next(c.annotations.into())? }; @@ -264,7 +265,7 @@ fn convert(c: Convert) -> io::Result<()> { None => return Ok(()), Some(value) => { w(&value)?; - r.discard_to_pos(); + source.read.discard_to_pos(); count += 1; if let Some(limit) = c.limit { if count >= limit {