aboutsummaryrefslogtreecommitdiff
path: root/src/SBaseFileTable.cpp
diff options
context:
space:
mode:
authorunknown <C:\Ladik\Mail>2015-08-03 17:41:31 +0200
committerunknown <C:\Ladik\Mail>2015-08-03 17:41:31 +0200
commit922d3a82b897f3cbe45b45d4e072361c681a8959 (patch)
tree196d2fc5034c68bbd8d4d5b660b40a127dc6ef25 /src/SBaseFileTable.cpp
parent607e4458e775e17de450f550e7d412ef41013138 (diff)
+ Fixed patch archives
+ Empty MPQs are no longer marked as malformed
Diffstat (limited to 'src/SBaseFileTable.cpp')
-rw-r--r--src/SBaseFileTable.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp
index b293574..ed0748d 100644
--- a/src/SBaseFileTable.cpp
+++ b/src/SBaseFileTable.cpp
@@ -374,10 +374,13 @@ int ConvertMpqHeaderToFormat4(
//
Label_ArchiveVersion1:
- if(pHeader->dwHashTablePos <= pHeader->dwHeaderSize || (pHeader->dwHashTablePos & 0x80000000))
- ha->dwFlags |= MPQ_FLAG_MALFORMED;
- if(pHeader->dwBlockTablePos <= pHeader->dwHeaderSize || (pHeader->dwBlockTablePos & 0x80000000))
- ha->dwFlags |= MPQ_FLAG_MALFORMED;
+ if(pHeader->dwBlockTableSize > 1) // Prevent empty MPQs being marked as malformed
+ {
+ if(pHeader->dwHashTablePos <= pHeader->dwHeaderSize || (pHeader->dwHashTablePos & 0x80000000))
+ ha->dwFlags |= MPQ_FLAG_MALFORMED;
+ if(pHeader->dwBlockTablePos <= pHeader->dwHeaderSize || (pHeader->dwBlockTablePos & 0x80000000))
+ ha->dwFlags |= MPQ_FLAG_MALFORMED;
+ }
// Only low byte of sector size is really used
if(pHeader->wSectorSize & 0xFF00)