diff options
author | Ladislav Zezula <zezula@volny.cz> | 2020-08-31 13:59:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-31 13:59:14 +0200 |
commit | cbb7ca874a53bc42cc7a09384ff4819e6b81b29c (patch) | |
tree | b31d176d52b371fee4fcc58fe2a4b3da2c2f5d06 | |
parent | f438d59c5c10c9d2308ac1bfaff8da54bdbb8c4f (diff) | |
parent | 65784a4ee915fe9d737ba761acd084639df5b35e (diff) |
Merge pull request #186 from ladislav-zezula/FixHashTable
Fixed missing hash table in case when HET table exists
-rw-r--r-- | src/SBaseFileTable.cpp | 4 | ||||
-rw-r--r-- | test/StormTest.cpp | 13 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp index 7f67533..7c9a857 100644 --- a/src/SBaseFileTable.cpp +++ b/src/SBaseFileTable.cpp @@ -2340,7 +2340,9 @@ int LoadAnyHashTable(TMPQArchive * ha) ha->pHetTable = LoadHetTable(ha);
// Try to load classic hash table
- if(pHeader->dwHashTableSize && ha->pHetTable == NULL)
+ // Note that we load the classic hash table even when HET table exists,
+ // because if the MPQ gets modified and saved, hash table must be there
+ if(pHeader->dwHashTableSize)
ha->pHashTable = LoadHashTable(ha);
// At least one of the tables must be present
diff --git a/test/StormTest.cpp b/test/StormTest.cpp index 6732ed0..979750c 100644 --- a/test/StormTest.cpp +++ b/test/StormTest.cpp @@ -4409,8 +4409,19 @@ int _tmain(int argc, TCHAR * argv[]) printf("==== Test Suite for StormLib version %s ====\n", STORMLIB_VERSION_STRING);
nError = InitializeMpqDirectory(argv, argc);
+ SFILE_FIND_DATA sf;
+ HANDLE hFind = NULL;
HANDLE hMpq = NULL;
- SFileOpenArchive(_T("e:\\Multimedia\\MPQs\\2010 - Starcraft II\\25092\\Updates\\enGB\\s2-update-enGB-24540.MPQ"), 0, 0, &hMpq);
+ if(SFileOpenArchive(_T("e:\\Ladik\\Incoming\\mpq-issue\\SampleB-by861.SC2Map"), 0, MPQ_OPEN_FORCE_LISTFILE, &hMpq))
+ {
+ if((hFind = SFileFindFirstFile(hMpq, "*", &sf, NULL)) != NULL)
+ {
+ SFileFindNextFile(hFind, &sf);
+ SFileFindClose(hFind);
+ }
+
+ SFileCloseArchive(hMpq);
+ }
// Not a test, but rather a tool for creating links to duplicated files
// if(nError == ERROR_SUCCESS)
|