diff options
Diffstat (limited to 'src/SBaseFileTable.cpp')
-rw-r--r-- | src/SBaseFileTable.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp index 322211c..54b66c4 100644 --- a/src/SBaseFileTable.cpp +++ b/src/SBaseFileTable.cpp @@ -270,6 +270,10 @@ static ULONGLONG DetermineArchiveSize_V1_V2( if(pHeader->dwBlockTablePos + (pHeader->dwBlockTableSize * sizeof(TMPQBlock)) == pHeader->dwArchiveSize) return pHeader->dwArchiveSize; + // If both block table and archive size seem to be out of the file size + if(pHeader->dwBlockTablePos > FileSize && pHeader->dwArchiveSize > FileSize) + return pHeader->dwArchiveSize; + // If the archive size in the header is less than real file size dwArchiveSize32 = (DWORD)(FileSize - MpqOffset); if(pHeader->dwArchiveSize <= dwArchiveSize32) |