From 1a94f94b50f6d829b1e8fba08a3002a5db4f00d5 Mon Sep 17 00:00:00 2001 From: Ladislav Zezula Date: Fri, 17 Dec 2021 14:51:35 +0100 Subject: Support for protected SCX files --- src/SBaseFileTable.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/SBaseFileTable.cpp') 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; } } -- cgit v1.2.3