aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLadislav Zezula <zezula@volny.cz>2025-04-28 13:55:45 +0200
committerLadislav Zezula <zezula@volny.cz>2025-04-28 13:55:45 +0200
commitc6d89095fcdcaa83987d64040f44416bd9083f25 (patch)
treecfc6ab0f5dd00ea0b601d573eca98fe8a6355c10
parent774c3902232603e7700983b7d4d697a97a8c7c83 (diff)
Fixed wrong state in SFileAddFile
-rw-r--r--StormLib_test.vcxproj2
-rw-r--r--src/SFileAddFile.cpp2
-rwxr-xr-xtest/StormTest.cpp65
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 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
- <CharacterSet>Unicode</CharacterSet>
+ <CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
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))
{