mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-05-27 22:00:23 -04:00
fix lzma decompression
This commit is contained in:
parent
251854cc41
commit
44b02b92d8
@ -231,7 +231,9 @@ namespace AssetStudio
|
|||||||
}
|
}
|
||||||
case 1: //LZMA
|
case 1: //LZMA
|
||||||
{
|
{
|
||||||
blocksInfoUncompresseddStream = SevenZipHelper.StreamDecompress(blocksInfoCompressedStream);
|
blocksInfoUncompresseddStream = new MemoryStream((int)(m_Header.uncompressedBlocksInfoSize));
|
||||||
|
SevenZipHelper.StreamDecompress(blocksInfoCompressedStream, blocksInfoUncompresseddStream, m_Header.compressedBlocksInfoSize, m_Header.uncompressedBlocksInfoSize);
|
||||||
|
blocksInfoUncompresseddStream.Position = 0;
|
||||||
blocksInfoCompressedStream.Close();
|
blocksInfoCompressedStream.Close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -34,15 +34,16 @@ namespace AssetStudio
|
|||||||
return newOutStream;
|
return newOutStream;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void StreamDecompress(Stream inStream, Stream outStream, long inSize, long outSize)
|
public static void StreamDecompress(Stream compressedStream, Stream decompressedStream, long compressedSize, long decompressedSize)
|
||||||
{
|
{
|
||||||
|
var basePosition = compressedStream.Position;
|
||||||
var decoder = new Decoder();
|
var decoder = new Decoder();
|
||||||
var properties = new byte[5];
|
var properties = new byte[5];
|
||||||
if (inStream.Read(properties, 0, 5) != 5)
|
if (compressedStream.Read(properties, 0, 5) != 5)
|
||||||
throw new Exception("input .lzma is too short");
|
throw new Exception("input .lzma is too short");
|
||||||
decoder.SetDecoderProperties(properties);
|
decoder.SetDecoderProperties(properties);
|
||||||
inSize -= 5L;
|
decoder.Code(compressedStream, decompressedStream, compressedSize - 5, decompressedSize, null);
|
||||||
decoder.Code(inStream, outStream, inSize, outSize, null);
|
compressedStream.Position = basePosition + compressedSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user