diff --git a/3rdParty/Storm/Source/storm.h b/3rdParty/Storm/Source/storm.h index dd5548da2..86d8a9f10 100644 --- a/3rdParty/Storm/Source/storm.h +++ b/3rdParty/Storm/Source/storm.h @@ -200,6 +200,7 @@ BOOL STORMAPI SFileCloseArchive(HANDLE hArchive); BOOL STORMAPI SFileCloseFile(HANDLE hFile); BOOL STORMAPI SFileDdaBeginEx(HANDLE hFile, DWORD flags, DWORD mask, unsigned __int32 lDistanceToMove, signed __int32 volume, signed int pan, int a7); +void SFileFreeChunk(); BOOL STORMAPI SFileDdaDestroy(); BOOL STORMAPI SFileDdaEnd(HANDLE hFile); BOOL STORMAPI SFileDdaGetPos(HANDLE hFile, DWORD *current, DWORD *end); diff --git a/Source/effects.cpp b/Source/effects.cpp index 6805324a2..7dfef38fc 100644 --- a/Source/effects.cpp +++ b/Source/effects.cpp @@ -920,6 +920,7 @@ void sfx_stop() if (sfx_stream) { SFileDdaEnd(sfx_stream); SFileCloseFile(sfx_stream); + SFileFreeChunk(); sfx_stream = NULL; sfx_data_cur = NULL; } diff --git a/SourceX/storm/storm.cpp b/SourceX/storm/storm.cpp index 8ea220ab8..9325c0998 100644 --- a/SourceX/storm/storm.cpp +++ b/SourceX/storm/storm.cpp @@ -103,6 +103,12 @@ BOOL SFileDdaBeginEx(HANDLE hFile, DWORD flags, DWORD mask, unsigned __int32 lDi return true; } +void SFileFreeChunk() +{ + if(SFileChunk) + Mix_FreeChunk(SFileChunk); +} + BOOL SFileDdaDestroy() { Mix_FreeChunk(SFileChunk);