diff --git a/Source/engine.cpp b/Source/engine.cpp index ca8d97122..5196b3c95 100644 --- a/Source/engine.cpp +++ b/Source/engine.cpp @@ -2462,23 +2462,27 @@ BYTE *LoadFileInMem(char *pszName, int *pdwFileLen) return buf; } -void LoadFileWithMem(char *pszName, void *buf) +DWORD LoadFileWithMem(const char *pszName, void *p) { - char *v2; // ebx - char *v3; // edi - int v4; // esi - HANDLE a1; // [esp+Ch] [ebp-4h] - - v2 = (char *)buf; - v3 = pszName; - if (!buf) + DWORD dwFileLen; + HANDLE hsFile; + + /// ASSERT: assert(pszName); + if(p == NULL) { app_fatal("LoadFileWithMem(NULL):\n%s", pszName); - WOpenFile(v3, &a1, 0); - v4 = WGetFileSize(a1, 0); - if (!v4) - app_fatal("Zero length SFILE:\n%s", v3); - WReadFile(a1, v2, v4); - WCloseFile(a1); + } + + WOpenFile(pszName, &hsFile, FALSE); + + dwFileLen = WGetFileSize(hsFile, NULL); + if(dwFileLen == 0) { + app_fatal("Zero length SFILE:\n%s", pszName); + } + + WReadFile(hsFile, p, dwFileLen); + WCloseFile(hsFile); + + return dwFileLen; } void Cl2ApplyTrans(BYTE *p, BYTE *ttbl, int nCel) diff --git a/Source/engine.h b/Source/engine.h index 6faab8baa..27a9f950a 100644 --- a/Source/engine.h +++ b/Source/engine.h @@ -44,7 +44,7 @@ void engine_debug_trap(BOOL show_cursor); unsigned char *DiabloAllocPtr(int dwBytes); void mem_free_dbg(void *p); BYTE *LoadFileInMem(char *pszName, int *pdwFileLen); -void LoadFileWithMem(char *pszName, void *buf); +DWORD LoadFileWithMem(const char *pszName, void *p); void Cl2ApplyTrans(BYTE *p, BYTE *ttbl, int nCel); void Cl2DecodeFrm1(int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int CelSkip, int CelCap); void Cl2DecDatFrm1(BYTE *pDecodeTo, BYTE *pRLEBytes, int nDataSize, int nWidth);