Mercurial > touhou
diff formats/src/th06/pbg3.rs @ 761:f506ad5c9b17
formats: Replace unwrap() with proper io::Error.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Wed, 06 Jan 2021 01:47:06 +0100 |
parents | eba9a3d0c484 |
children | ccb04468c5fa |
line wrap: on
line diff
--- a/formats/src/th06/pbg3.rs +++ b/formats/src/th06/pbg3.rs @@ -120,8 +120,7 @@ impl<R: io::Read + io::Seek> PBG3<R> { let offset = bitstream.read_u32()?; let size = bitstream.read_u32()?; let name = bitstream.read_string(255)?; - // XXX: no unwrap! - let name = String::from_utf8(name).unwrap(); + let name = String::from_utf8(name).map_err(|err| io::Error::new(io::ErrorKind::InvalidData, err))?; entries.insert(name, (unknown_1, unknown_2, checksum, offset, size)); } @@ -135,8 +134,9 @@ impl<R: io::Read + io::Seek> PBG3<R> { /// Read a single file from this PBG3 archive. pub fn get_file(&mut self, filename: &str, check: bool) -> io::Result<Vec<u8>> { - // XXX: no unwrap! - let (_unknown_1, _unknown_2, checksum, offset, size) = self.entries.get(filename).unwrap(); + let (_unknown_1, _unknown_2, checksum, offset, size) = + self.entries.get(filename) + .ok_or_else(|| io::Error::new(io::ErrorKind::NotFound, format!("File not found in PBG3: {}", filename)))?; self.bitstream.seek(io::SeekFrom::Start(*offset as u64))?; let data = lzss::decompress(&mut self.bitstream.bitstream, *size as usize, 0x2000, 13, 4, 3)?; if check {