From 7597fe1702e4f27faf51d201b566139e17ad4342 Mon Sep 17 00:00:00 2001 From: Ladislav Zezula Date: Mon, 11 Jul 2016 22:52:11 +0200 Subject: + Yet another protector solved --- src/SBaseCommon.cpp | 15 +++++++++++++++ src/SFileOpenFileEx.cpp | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/SBaseCommon.cpp b/src/SBaseCommon.cpp index 95bdeb4..5483f55 100644 --- a/src/SBaseCommon.cpp +++ b/src/SBaseCommon.cpp @@ -255,6 +255,21 @@ DWORD HashStringLower(const char * szFileName, DWORD dwHashType) //----------------------------------------------------------------------------- // Calculates the hash table size for a given amount of files +// Returns the nearest higher power of two. +// If the value is already a power of two, returns the same value +//static DWORD GetNearestPowerOfTwo(DWORD dwValue) +//{ +// dwValue --; +// +// dwValue |= dwValue >> 1; +// dwValue |= dwValue >> 2; +// dwValue |= dwValue >> 4; +// dwValue |= dwValue >> 8; +// dwValue |= dwValue >> 16; +// +// return dwValue + 1; +//} + DWORD GetHashTableSizeForFileCount(DWORD dwFileCount) { DWORD dwPowerOfTwo = HASH_TABLE_SIZE_MIN; diff --git a/src/SFileOpenFileEx.cpp b/src/SFileOpenFileEx.cpp index afbfc78..9ce0ae2 100644 --- a/src/SFileOpenFileEx.cpp +++ b/src/SFileOpenFileEx.cpp @@ -30,7 +30,7 @@ static DWORD FindHashIndex(TMPQArchive * ha, DWORD dwFileIndex) pHashTableEnd = ha->pHashTable + ha->pHeader->dwHashTableSize; for(pHash = ha->pHashTable; pHash < pHashTableEnd; pHash++) { - if(pHash->dwBlockIndex == dwFileIndex) + if(MPQ_BLOCK_INDEX(pHash) == dwFileIndex) { // Duplicate hash entry found if(dwFirstIndex != HASH_ENTRY_FREE) -- cgit v1.2.3