mirror of
https://github.com/xavo95/repak.git
synced 2025-02-22 15:53:45 +00:00
Add compression block size assert to ensure pak version compatibility
This commit is contained in:
parent
1d1ad7138d
commit
057429fde1
1 changed files with 15 additions and 6 deletions
|
@ -275,10 +275,19 @@ impl Entry {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write_encoded<W: io::Write>(&self, writer: &mut W) -> Result<(), super::Error> {
|
pub fn write_encoded<W: io::Write>(&self, writer: &mut W) -> Result<(), super::Error> {
|
||||||
let mut compression_block_size = (self.compression_block_size >> 11) & 0x3f;
|
let compression_block_size = (self.compression_block_size >> 11) & 0x3f;
|
||||||
if (compression_block_size << 11) != self.compression_block_size {
|
if (compression_block_size << 11) != self.compression_block_size
|
||||||
compression_block_size = 0x3f;
|
|| compression_block_size == 0x3f
|
||||||
|
{
|
||||||
|
// https://github.com/EpicGames/UnrealEngine/commit/3aad0ff7976be1073005dca2c1282af548b45d89
|
||||||
|
panic!(
|
||||||
|
"Unsupported compression block size: {}. Block size must fit into flags field or it may cause unreadable paks for earlier Unreal Engine versions.",
|
||||||
|
self.compression_block_size
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
//if (compression_block_size << 11) != self.compression_block_size {
|
||||||
|
// compression_block_size = 0x3f;
|
||||||
|
//}
|
||||||
let compression_blocks_count = if self.compression_slot.is_some() {
|
let compression_blocks_count = if self.compression_slot.is_some() {
|
||||||
self.blocks.as_ref().unwrap().len() as u32
|
self.blocks.as_ref().unwrap().len() as u32
|
||||||
} else {
|
} else {
|
||||||
|
@ -298,9 +307,9 @@ impl Entry {
|
||||||
|
|
||||||
writer.write_u32::<LE>(flags)?;
|
writer.write_u32::<LE>(flags)?;
|
||||||
|
|
||||||
if compression_block_size == 0x3f {
|
//if compression_block_size == 0x3f {
|
||||||
writer.write_u32::<LE>(self.compression_block_size)?;
|
// writer.write_u32::<LE>(self.compression_block_size)?;
|
||||||
}
|
//}
|
||||||
|
|
||||||
if is_offset_32_bit_safe {
|
if is_offset_32_bit_safe {
|
||||||
writer.write_u32::<LE>(self.offset as u32)?;
|
writer.write_u32::<LE>(self.offset as u32)?;
|
||||||
|
|
Loading…
Reference in a new issue