diff --git a/BurnOutSharp.Compression/MSZIP.cs b/BurnOutSharp.Compression/MSZIP.cs
index aaeee46c..b1b43efa 100644
--- a/BurnOutSharp.Compression/MSZIP.cs
+++ b/BurnOutSharp.Compression/MSZIP.cs
@@ -19,9 +19,9 @@ namespace BurnOutSharp.Compression
///
/// Decompress MSZIP data block
///
- public byte[] DecompressMSZIPData(byte[] data, byte[] previousBlock = null)
+ public byte[] DecompressMSZIPData(byte[] data, bool previousBlock = false)
{
- if (previousBlock != null)
+ if (previousBlock)
_inflater.Reset();
_inflater.SetInput(buffer: data, 2, data.Length - 2);
diff --git a/BurnOutSharp.Wrappers/MicrosoftCabinet.cs b/BurnOutSharp.Wrappers/MicrosoftCabinet.cs
index 65786dd5..827ded85 100644
--- a/BurnOutSharp.Wrappers/MicrosoftCabinet.cs
+++ b/BurnOutSharp.Wrappers/MicrosoftCabinet.cs
@@ -217,19 +217,19 @@ namespace BurnOutSharp.Wrappers
// Store the last decompressed block for MS-ZIP
Compression.MSZIP mszip = new Compression.MSZIP();
- byte[] lastDecompressed = null;
+ bool hasLastBlock = false;
List data = new List();
foreach (var dataBlock in folder.DataBlocks)
{
- byte[] decompressed = null;
+ byte[] decompressed;
switch (folder.CompressionType & Models.MicrosoftCabinet.CompressionType.MASK_TYPE)
{
case Models.MicrosoftCabinet.CompressionType.TYPE_NONE:
decompressed = dataBlock.CompressedData;
break;
case Models.MicrosoftCabinet.CompressionType.TYPE_MSZIP:
- decompressed = mszip.DecompressMSZIPData(dataBlock.CompressedData, lastDecompressed);
+ decompressed = mszip.DecompressMSZIPData(dataBlock.CompressedData, hasLastBlock);
break;
case Models.MicrosoftCabinet.CompressionType.TYPE_QUANTUM:
// TODO: UNIMPLEMENTED
@@ -245,9 +245,8 @@ namespace BurnOutSharp.Wrappers
return null;
}
- lastDecompressed = decompressed;
- if (decompressed != null)
- data.AddRange(decompressed);
+ hasLastBlock = true;
+ data.AddRange(decompressed ?? new byte[0]);
}
return data.ToArray();
@@ -468,7 +467,8 @@ namespace BurnOutSharp.Wrappers
Console.WriteLine($" Folder {i}");
Console.WriteLine($" Cab start offset = {entry.CabStartOffset}");
Console.WriteLine($" Data count = {entry.DataCount}");
- Console.WriteLine($" Compression type = {entry.CompressionType} ({entry.CompressionType & Models.MicrosoftCabinet.CompressionType.MASK_TYPE})");
+ Console.WriteLine($" Compression type = {entry.CompressionType}");
+ Console.WriteLine($" Masked compression type = {entry.CompressionType & Models.MicrosoftCabinet.CompressionType.MASK_TYPE}");
if (entry.ReservedData == null)
Console.WriteLine($" Reserved data = [NULL]");
else