diff options
author | Robert Müller <robert.mueller@uni-siegen.de> | 2021-08-16 21:56:46 +0200 |
---|---|---|
committer | Robert Müller <robert.mueller@uni-siegen.de> | 2021-11-30 22:43:58 +0100 |
commit | 579b85f74248ca5e2447806e4fbdca0069143e0a (patch) | |
tree | db5be4b119ac26f9a07cdea45c26a9863e60b43a | |
parent | 8561b4c859f9bd268384b79004641a920f7cbd42 (diff) |
fix only first command chain data being freed
-rw-r--r-- | src/engine/shared/console.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/engine/shared/console.cpp b/src/engine/shared/console.cpp index 5d456120e..369087d6d 100644 --- a/src/engine/shared/console.cpp +++ b/src/engine/shared/console.cpp @@ -833,8 +833,16 @@ CConsole::~CConsole() { CCommand *pNext = pCommand->m_pNext; - if(pCommand->m_pfnCallback == Con_Chain) - mem_free(static_cast<CChain *>(pCommand->m_pUserData)); + FCommandCallback pfnCallback = pCommand->m_pfnCallback; + void *pUserData = pCommand->m_pUserData; + while(pfnCallback == Con_Chain) + { + CChain *pChainInfo = static_cast<CChain *>(pUserData); + pfnCallback = pChainInfo->m_pfnCallback; + pUserData = pChainInfo->m_pCallbackUserData; + mem_free(pChainInfo); + } + mem_free(pCommand); pCommand = pNext; |