diff --git a/src/error.rs b/src/error.rs index efdc92e..439d239 100644 --- a/src/error.rs +++ b/src/error.rs @@ -16,4 +16,6 @@ pub enum Error { SqPackError(#[from] sqpack::binrw::Error), #[error("error writing to output")] BinRwWrite(sqpack::binrw::Error), + #[error("a bug in textools corrupted this mod pack")] + TexToolsBug, } diff --git a/src/ttmp_extractor.rs b/src/ttmp_extractor.rs index 79e6757..5d526fb 100644 --- a/src/ttmp_extractor.rs +++ b/src/ttmp_extractor.rs @@ -347,6 +347,9 @@ impl TtmpExtractor { let mut reader = (&mut reader).take(header.uncompressed_size as u64); let read = std::io::copy(&mut reader, &mut writer).map_err(Error::Io)?; (read, read) + } else if header.compressed_size == 0 { + // https://github.com/TexTools/xivModdingFramework/issues/51 + return Err(Error::TexToolsBug); } else { // compressed let reader = (&mut reader).take(header.compressed_size as u64);