From c5400b010783f5e695569163b0ad42afb123b4f8 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 19 Jul 2014 20:26:11 +0300 Subject: Fix memory leak in ipc on client exit. --- src/net/ipc.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/net') diff --git a/src/net/ipc.cpp b/src/net/ipc.cpp index 6d7c2c45b..0c6b36a3b 100644 --- a/src/net/ipc.cpp +++ b/src/net/ipc.cpp @@ -47,6 +47,16 @@ IPC::IPC() : IPC::~IPC() { + mListen = false; + if (mSocket) + { + TcpNet::closeSocket(mSocket); + mSocket = nullptr; + } + int status; + if (mThread && SDL_GetThreadID(mThread)) + SDL_WaitThread(mThread, &status); + mThread = nullptr; } bool IPC::init() @@ -127,6 +137,8 @@ int IPC::acceptLoop(void *ptr) TcpNet::closeSocket(sock); } TcpNet::closeSocket(ipc1->mSocket); + ipc1->mSocket = nullptr; + ipc->mThread = nullptr; return 0; } @@ -136,10 +148,7 @@ void IPC::stop() return; logger->log("Stopping IPC..."); - ipc->mListen = false; - int loopRet; - SDL_WaitThread(ipc->mThread, &loopRet); - ipc = nullptr; + delete2(ipc); } void IPC::start() -- cgit v1.2.3-70-g09d2