From 74938fdacdb5fc960897fe4ac2722a2cfc74a9cb Mon Sep 17 00:00:00 2001 From: BDC Date: Fri, 17 Apr 2020 19:03:44 +1200 Subject: [PATCH] Fix memory leak with audio stream not been released SFileChunk was not been release. --- 3rdParty/Storm/Source/storm.h | 1 + Source/effects.cpp | 1 + SourceX/storm/storm.cpp | 6 ++++++ 3 files changed, 8 insertions(+) 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 baa4eff3f..8456274d8 100644 --- a/Source/effects.cpp +++ b/Source/effects.cpp @@ -936,6 +936,7 @@ void stream_stop() if (sghStream) { SFileDdaEnd(sghStream); SFileCloseFile(sghStream); + SFileFreeChunk(); sghStream = NULL; sgpStreamSFX = NULL; } diff --git a/SourceX/storm/storm.cpp b/SourceX/storm/storm.cpp index d95c3c5cc..fa6339b24 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);