diff options
author | Ladislav Zezula <ladislav.zezula@avast.com> | 2021-12-17 14:51:35 +0100 |
---|---|---|
committer | Ladislav Zezula <ladislav.zezula@avast.com> | 2021-12-17 22:33:19 +0100 |
commit | 4f4f926c1a3347f7ecd18f549c4be0a1e62413ba (patch) | |
tree | f68df366a3afc64a60f48e679990e5c4504399a2 /src/SBaseFileTable.cpp | |
parent | 5ced3835f9d52584bc20fb6a3a0e58069374e9af (diff) |
Support for protected SCX files
Diffstat (limited to 'src/SBaseFileTable.cpp')
-rw-r--r-- | src/SBaseFileTable.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp index 7d52f7c..97fa3a2 100644 --- a/src/SBaseFileTable.cpp +++ b/src/SBaseFileTable.cpp @@ -893,15 +893,11 @@ static DWORD BuildFileTableFromBlockTable( TMPQHash * pHash;
LPDWORD DefragmentTable = NULL;
DWORD dwItemCount = 0;
- DWORD dwFlagMask;
// Sanity checks
assert(ha->pFileTable != NULL);
assert(ha->dwFileTableSize >= ha->dwMaxFileCount);
- // MPQs for Warcraft III doesn't know some flags, namely MPQ_FILE_SINGLE_UNIT and MPQ_FILE_PATCH_FILE
- dwFlagMask = (ha->dwFlags & MPQ_FLAG_WAR3_MAP) ? MPQ_FILE_VALID_FLAGS_W3X : MPQ_FILE_VALID_FLAGS;
-
// Defragment the hash table, if needed
if(ha->dwFlags & MPQ_FLAG_HASH_TABLE_CUT)
{
@@ -976,10 +972,12 @@ static DWORD BuildFileTableFromBlockTable( if(pFileEntry->ByteOffset == 0 && pBlock->dwFSize == 0)
pFileEntry->ByteOffset = ha->pHeader->dwHeaderSize;
+ // Clear file flags that are unknown to this type of map.
+ pFileEntry->dwFlags = pBlock->dwFlags & ha->dwValidFileFlags;
+
// Fill the rest of the file entry
- pFileEntry->dwFileSize = pBlock->dwFSize;
- pFileEntry->dwCmpSize = pBlock->dwCSize;
- pFileEntry->dwFlags = pBlock->dwFlags & dwFlagMask;
+ pFileEntry->dwFileSize = pBlock->dwFSize;
+ pFileEntry->dwCmpSize = pBlock->dwCSize;
}
}
|