diff options
author | Ladislav Zezula <zezula@volny.cz> | 2023-06-07 21:39:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-07 21:39:00 +0200 |
commit | 28c9b4be3f23c6b3a5ff55cacac7dbe5b9cdc4fc (patch) | |
tree | 293c3c0ed4e641a4d3e91cc0dce094597fa8c3d2 /src/SFileReadFile.cpp | |
parent | 51ba11c5b78752852023fd6156cd8842c1c3e336 (diff) | |
parent | fb111670e8af18169bb7b37774953af14edf99e1 (diff) |
Merge pull request #295 from ladislav-zezula/LZ_ReadError_Volcanisv9.25
Lz read error volcanis
Diffstat (limited to 'src/SFileReadFile.cpp')
-rw-r--r-- | src/SFileReadFile.cpp | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/src/SFileReadFile.cpp b/src/SFileReadFile.cpp index 39f794e..b0698c1 100644 --- a/src/SFileReadFile.cpp +++ b/src/SFileReadFile.cpp @@ -14,6 +14,11 @@ #include "StormCommon.h" //----------------------------------------------------------------------------- +// External references (not public functions) + +int WINAPI SCompDecompressX(TMPQArchive * ha, void * pvOutBuffer, int * pcbOutBuffer, void * pbInBuffer, int cbInBuffer); + +//----------------------------------------------------------------------------- // Local functions // hf - MPQ File handle. @@ -171,18 +176,10 @@ static DWORD ReadMpqSectors(TMPQFile * hf, LPBYTE pbBuffer, DWORD dwByteOffset, // Remember the last used compression hf->dwCompression0 = pbInSector[0]; - // Decompress the data - if(ha->pHeader->wFormatVersion >= MPQ_FORMAT_VERSION_2) - { - nResult = SCompDecompress2(pbOutSector, &cbOutSector, pbInSector, cbInSector); - } - else - { - if(ha->dwFlags & MPQ_FLAG_STARCRAFT_BETA) - nResult = SCompDecompress_SC1B(pbOutSector, &cbOutSector, pbInSector, cbInSector); - else - nResult = SCompDecompress(pbOutSector, &cbOutSector, pbInSector, cbInSector); - } + // Decompress the data. We need to perform MPQ-specific decompression, + // as multiple Blizzard games may have their own decompression tables + // and even decompression methods. + nResult = SCompDecompressX(ha, pbOutSector, &cbOutSector, pbInSector, cbInSector); } // Is the file compressed by PKWARE Data Compression Library ? |