aboutsummaryrefslogtreecommitdiff
path: root/src/SBaseFileTable.cpp
diff options
context:
space:
mode:
authorLadislav <Zezula>2014-01-03 18:56:23 +0100
committerLadislav <Zezula>2014-01-03 18:56:23 +0100
commit6cd009bc7cb60b4000e2267c7d100a3f0d9a42a0 (patch)
tree7e2b5dd6f85855c284067442fc6ebce5c95409f3 /src/SBaseFileTable.cpp
parent3a9a6ec46beaf839cfe4fe8b6a26e1ca5e2d0316 (diff)
+ Version 9.00 released
Diffstat (limited to 'src/SBaseFileTable.cpp')
-rw-r--r--src/SBaseFileTable.cpp4
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)