in src/reader.rs [277:300]
fn read_version(&mut self) -> Result<u32, GcovReaderError> {
let i = self.pos;
if i + 4 <= self.buffer.len() {
self.pos += 4;
if self.is_little_endian() && self.buffer[i] == b'*' {
Ok(self.get_version(&self.buffer[i + 1..i + 4]))
} else if !self.is_little_endian() && self.buffer[i + 3] == b'*' {
let buf = [self.buffer[i + 2], self.buffer[i + 1], self.buffer[i]];
Ok(self.get_version(&buf))
} else {
let bytes = &self.buffer[i..i + 4];
Err(GcovReaderError::Str(format!(
"Unexpected version: {} in {}",
String::from_utf8_lossy(bytes),
self.get_stem()
)))
}
} else {
Err(GcovReaderError::Str(format!(
"Not enough data in buffer: Cannot read version in {}",
self.get_stem()
)))
}
}