From f0ca875a216eaab3d213feae8ba75c07795c9304 Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 21 Feb 2012 22:39:53 +0100 Subject: Tools/Extractors: Changed search method, it will no longer miss some dbc files --- dep/StormLib/src/SFileFindFile.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'dep/StormLib/src/SFileFindFile.cpp') diff --git a/dep/StormLib/src/SFileFindFile.cpp b/dep/StormLib/src/SFileFindFile.cpp index aa065d23a84..542637b3668 100644 --- a/dep/StormLib/src/SFileFindFile.cpp +++ b/dep/StormLib/src/SFileFindFile.cpp @@ -31,7 +31,7 @@ struct TMPQSearch DWORD dwSearchTableItems; // Number of items in the search table DWORD dwNextIndex; // Next file index to be checked DWORD dwFlagMask; // For checking flag mask - char szSearchMask[1]; // Search mask (variable length) + char * szSearchMask; // Search mask (variable length) }; //----------------------------------------------------------------------------- @@ -69,7 +69,7 @@ bool CheckWildCard(const char * szString, const char * szWildCard) szString++; } - // If there is '*', means zero or more chars. We have to + // If there is '*', means zero or more chars. We have to // find the sequence after '*' if(*szWildCard == '*') { @@ -337,6 +337,8 @@ static void FreeMPQSearch(TMPQSearch *& hs) { if(hs->pSearchTable != NULL) STORM_FREE(hs->pSearchTable); + if(hs->szSearchMask != NULL) + free(hs->szSearchMask); // allocated with strdup STORM_FREE(hs); hs = NULL; } @@ -376,7 +378,7 @@ HANDLE WINAPI SFileFindFirstFile(HANDLE hMpq, const char * szMask, SFILE_FIND_DA if(nError == ERROR_SUCCESS) { memset(hs, 0, sizeof(TMPQSearch)); - strcpy(hs->szSearchMask, szMask); + hs->szSearchMask = strdup(szMask); hs->dwFlagMask = MPQ_FILE_EXISTS; hs->ha = ha; @@ -406,7 +408,7 @@ HANDLE WINAPI SFileFindFirstFile(HANDLE hMpq, const char * szMask, SFILE_FIND_DA FreeMPQSearch(hs); SetLastError(nError); } - + // Return the result value return (HANDLE)hs; } -- cgit v1.2.3