fn read_version()

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()
            )))
        }
    }