in src/reader.rs [234:252]
fn read_string(&mut self) -> Result<String, GcovReaderError> {
let len = read_u!(u32, self)?;
if len == 0 {
return Ok("".to_string());
}
let len = len as usize * 4;
let start = self.pos;
self.pos += len;
if self.pos <= self.buffer.len() {
let bytes = &self.buffer[start..self.pos];
let i = len - bytes.iter().rev().position(|&x| x != 0).unwrap();
Ok(unsafe { std::str::from_utf8_unchecked(&bytes[..i]).to_string() })
} else {
Err(GcovReaderError::Str(format!(
"Not enough data in buffer: cannot read string in {}",
self.get_stem()
)))
}
}