mirror of
https://github.com/sharkdp/hexyl.git
synced 2026-10-26 20:16:34 +00:00
Add second check if read fails unexpectedly
This commit is contained in:
1 parent
f6a1c4e8e3
commit
5f82942f98
1 file changed
+14
-11
+14
-11
@@ -489,9 +489,12 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
|
|||||||
if let Ok(n) = buf.read(&mut self.line_buf) {
|
if let Ok(n) = buf.read(&mut self.line_buf) {
|
||||||
if n > 0 && n < 8 * self.panels as usize {
|
if n > 0 && n < 8 * self.panels as usize {
|
||||||
is_empty = false;
|
is_empty = false;
|
||||||
self.line_buf.resize(n, 0);
|
// perform second check on read
|
||||||
leftover = Some(n);
|
if let Ok(0) = buf.read(&mut self.line_buf[n..]) {
|
||||||
break;
|
self.line_buf.resize(n, 0);
|
||||||
|
leftover = Some(n);
|
||||||
|
break;
|
||||||
|
};
|
||||||
} else if n == 0 {
|
} else if n == 0 {
|
||||||
if self.squeezer == Squeezer::Delete {
|
if self.squeezer == Squeezer::Delete {
|
||||||
self.line_buf.clear();
|
self.line_buf.clear();
|
||||||
@@ -503,16 +506,16 @@ impl<'a, Writer: Write> Printer<'a, Writer> {
|
|||||||
is_empty = false;
|
is_empty = false;
|
||||||
|
|
||||||
if self.squeezer == Squeezer::Delete && self.squeeze_byte == 0 {
|
if self.squeezer == Squeezer::Delete && self.squeeze_byte == 0 {
|
||||||
for w in self.line_buf.chunks_exact(std::mem::size_of::<usize>()) {
|
if self
|
||||||
if usize::from_ne_bytes(w.try_into().unwrap()) != 0 {
|
.line_buf
|
||||||
self.squeezer = Squeezer::Ignore;
|
.chunks_exact(std::mem::size_of::<usize>())
|
||||||
all_zero = false;
|
.all(|w| usize::from_ne_bytes(w.try_into().unwrap()) == 0)
|
||||||
break;
|
{
|
||||||
}
|
|
||||||
}
|
|
||||||
if all_zero {
|
|
||||||
self.idx += 8 * self.panels;
|
self.idx += 8 * self.panels;
|
||||||
continue;
|
continue;
|
||||||
|
} else {
|
||||||
|
self.squeezer = Squeezer::Ignore;
|
||||||
|
all_zero = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user