From 8a36e3f6cfb7962048ed32f05d3b0c6efaff8a9f Mon Sep 17 00:00:00 2001 From: lifegpc Date: Sun, 20 Jul 2025 10:36:38 +0800 Subject: [PATCH] fix base offset calculated twice --- src/scripts/bgi/archive/v2.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/scripts/bgi/archive/v2.rs b/src/scripts/bgi/archive/v2.rs index a405cec..a255cf6 100644 --- a/src/scripts/bgi/archive/v2.rs +++ b/src/scripts/bgi/archive/v2.rs @@ -524,7 +524,6 @@ impl<'a, T: Iterator, R: Read + Seek + 'static> Iterat pub struct BgiArchiveWriter { writer: T, - file_count: u32, headers: HashMap, compress_file: bool, encoding: Encoding, @@ -554,7 +553,6 @@ impl BgiArchiveWriter { } Ok(BgiArchiveWriter { writer, - file_count: file_count as u32, headers, compress_file: config.bgi_compress_file, encoding, @@ -577,7 +575,6 @@ impl Archive for BgiArchiveWriter { header: entry, writer: &mut self.writer, pos: 0, - base_offset: 16 + (self.file_count as u64 * 0x80), }; Ok(if self.compress_file { Box::new(BgiArchiveFileWithDsc::new(file)) @@ -601,14 +598,12 @@ pub struct BgiArchiveFile<'a, T: Write + Seek> { header: &'a mut BgiFileHeader, writer: &'a mut T, pos: usize, - base_offset: u64, } impl<'a, T: Write + Seek> Write for BgiArchiveFile<'a, T> { fn write(&mut self, buf: &[u8]) -> std::io::Result { - self.writer.seek(SeekFrom::Start( - self.base_offset + self.header.offset as u64 + self.pos as u64, - ))?; + self.writer + .seek(SeekFrom::Start(self.header.offset as u64 + self.pos as u64))?; let bytes_written = self.writer.write(buf)?; self.pos += bytes_written; self.header.size = self.header.size.max(self.pos as u32);