From c6d89095fcdcaa83987d64040f44416bd9083f25 Mon Sep 17 00:00:00 2001 From: Ladislav Zezula Date: Mon, 28 Apr 2025 13:55:45 +0200 Subject: Fixed wrong state in SFileAddFile --- StormLib_test.vcxproj | 2 +- src/SFileAddFile.cpp | 2 +- test/StormTest.cpp | 65 ++++++++++++++++++++------------------------------- 3 files changed, 27 insertions(+), 42 deletions(-) diff --git a/StormLib_test.vcxproj b/StormLib_test.vcxproj index e7703c4..cfa4d65 100644 --- a/StormLib_test.vcxproj +++ b/StormLib_test.vcxproj @@ -46,7 +46,7 @@ Application v143 - Unicode + MultiByte diff --git a/src/SFileAddFile.cpp b/src/SFileAddFile.cpp index 54dcbc5..f98a185 100644 --- a/src/SFileAddFile.cpp +++ b/src/SFileAddFile.cpp @@ -443,7 +443,7 @@ DWORD SFileAddFile_Init( // Allocate the TMPQFile entry for newly added file hf = CreateWritableHandle(ha, dwFileSize); if(hf == NULL) - return false; + return GetLastError(); // Allocate file entry in the MPQ if(dwErrCode == ERROR_SUCCESS) diff --git a/test/StormTest.cpp b/test/StormTest.cpp index 3d9cb96..b769e02 100755 --- a/test/StormTest.cpp +++ b/test/StormTest.cpp @@ -3864,62 +3864,47 @@ static DWORD TestUtf8Conversions(const BYTE * szTestString, const TCHAR * szList static void Test_PlayingSpace() { - LPCTSTR szMpqName = _T("e:\\Ladik\\Incoming\\wow-final.MPQ"); - HANDLE hMpq = NULL; + HANDLE SFileOpenArchivevar0 = NULL; + LPCSTR fuzzData = "c:\\segv"; - if(SFileOpenArchive(szMpqName, 0, 0, &hMpq)) + for(DWORD i = 0; i < 1000; i++) { - SFileVerifyArchive(hMpq); - SFileCloseArchive(hMpq); - } + char NewName[128]; -/* - LPCSTR fuzzData = "e:\\MPQ_2025_05_AddFileError.mpq"; + sprintf(NewName, "c:\\segv%04u", i); + CopyFileA(fuzzData, NewName, FALSE); + SFileOpenArchivevar0 = NULL; - HANDLE SFileOpenArchivevar0; - memset(&SFileOpenArchivevar0, 0, (sizeof SFileOpenArchivevar0)); + bool SFileOpenArchiveval1 = SFileOpenArchive(NewName, i, 0, &SFileOpenArchivevar0); + if(!SFileOpenArchiveval1) + { + fprintf(stderr, "err2"); + exit(0); + } - bool SFileOpenArchiveval1 = SFileOpenArchive(fuzzData, (DWORD)strlen(fuzzData), 0, &SFileOpenArchivevar0); - //if(strcmp(argv[1], fuzzData)) - //{ - // fprintf(stderr, "err1"); - // exit(0); - //} - printf("Test"); - if((size_t)SFileOpenArchiveval1 < 1) - { - fprintf(stderr, "err2"); - exit(0); - } - bool SFileAddWaveval1 = SFileAddWave(SFileOpenArchivevar0, fuzzData, fuzzData, (DWORD)strlen(fuzzData), 1); - //if(strcmp(argv[1], fuzzData)) - //{ - // fprintf(stderr, "err3"); - // exit(0); - //} - if((size_t)SFileAddWaveval1 < 1) - { - fprintf(stderr, "err4"); - exit(0); + bool SFileAddWaveval1 = SFileAddWave(SFileOpenArchivevar0, fuzzData, fuzzData, i, 1); + if(!SFileAddWaveval1) + { + SFileCloseArchive(SFileOpenArchivevar0); + fprintf(stderr, "err4"); + exit(0); + } } + bool SFileRemoveFileval1 = SFileRemoveFile(SFileOpenArchivevar0, fuzzData, (DWORD)_tcslen(fuzzData)); - //if(strcmp(argv[1], fuzzData)) - //{ - // fprintf(stderr, "err5"); - // exit(0); - //} - if((size_t)SFileRemoveFileval1 < 1) + if(!SFileRemoveFileval1) { fprintf(stderr, "err6"); exit(0); } + DWORD SFileVerifyArchiveval1 = SFileVerifyArchive(SFileOpenArchivevar0); - if(SFileVerifyArchiveval1 < 0) + if(!SFileVerifyArchiveval1) { fprintf(stderr, "err7"); exit(0); } - */ + /* if(SFileOpenArchive(_T("E:\\DIABDAT.MPQ"), 0, 0, &hMpq)) { -- cgit v1.2.3