From f39cfd6773d5a6fbb34b019a9d053ebf78be0f0d Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Thu, 11 Aug 2022 14:56:05 -0700 Subject: [PATCH] Moved where metadata is instantiated, to prevent memory leak in error cases --- microstack/ILibAsyncServerSocket.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/microstack/ILibAsyncServerSocket.c b/microstack/ILibAsyncServerSocket.c index 19394d6..f639b4b 100644 --- a/microstack/ILibAsyncServerSocket.c +++ b/microstack/ILibAsyncServerSocket.c @@ -327,6 +327,8 @@ void ILibAsyncServerSocket_PostSelect(void* socketModule, int slct, fd_set *read void ILibAsyncServerSocket_Destroy(void *socketModule) { struct ILibAsyncServerSocketModule *module =(struct ILibAsyncServerSocketModule*)socketModule; + ILibMemory_Free(module->ChainLink.MetaData); + module->ChainLink.MetaData = NULL; free(module->AsyncSockets); module->AsyncSockets = NULL; @@ -637,7 +639,6 @@ ILibAsyncServerSocket_ServerModule ILibCreateAsyncServerSocketModuleWithMemoryEx // Instantiate a new AsyncServer module RetVal = (struct ILibAsyncServerSocketModule*)ILibChain_Link_Allocate(sizeof(struct ILibAsyncServerSocketModule), ServerUserMappedMemorySize); - RetVal->ChainLink.MetaData = ILibMemory_SmartAllocate_FromString("ILibAsyncServerSocket"); RetVal->ChainLink.PreSelectHandler = &ILibAsyncServerSocket_PreSelect; RetVal->ChainLink.PostSelectHandler = &ILibAsyncServerSocket_PostSelect; RetVal->ChainLink.DestroyHandler = &ILibAsyncServerSocket_Destroy; @@ -738,6 +739,7 @@ ILibAsyncServerSocket_ServerModule ILibCreateAsyncServerSocketModuleWithMemoryEx #pragma warning( push, 3 ) // warning C4127: conditional expression is constant #endif + RetVal->ChainLink.MetaData = ILibMemory_SmartAllocate_FromString("ILibAsyncServerSocket"); ILibAddToChain(Chain, RetVal); return RetVal; }