mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-20 06:58:20 +00:00
Fix memleak in CServer on instant shutdown
Direct leak of 566869 byte(s) in 1 object(s) allocated from: #0 0x4f28e3 in __interceptor_malloc (/home/teeworlds/servers/DDNet-Server-asan+0x4f28e3) #1 0x55b3c9 in CServer::LoadMap(char const*) /home/teeworlds/src/master/src/engine/server/server.cpp:2312:49 #2 0x55bfdd in CServer::Run() /home/teeworlds/src/master/src/engine/server/server.cpp:2351:6 #3 0x56add2 in main /home/teeworlds/src/master/src/engine/server/server.cpp:3553:21 #4 0x7f54401cd09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
This commit is contained in:
parent
b7f9e7a277
commit
71674b13da
|
@ -329,6 +329,17 @@ CServer::CServer() :
|
||||||
Init();
|
Init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CServer::~CServer()
|
||||||
|
{
|
||||||
|
for(auto &pCurrentMapData : m_apCurrentMapData)
|
||||||
|
{
|
||||||
|
if(pCurrentMapData)
|
||||||
|
free(pCurrentMapData);
|
||||||
|
}
|
||||||
|
|
||||||
|
delete m_pConnectionPool;
|
||||||
|
}
|
||||||
|
|
||||||
bool CServer::IsClientNameAvailable(int ClientID, const char *pNameRequest)
|
bool CServer::IsClientNameAvailable(int ClientID, const char *pNameRequest)
|
||||||
{
|
{
|
||||||
// check for empty names
|
// check for empty names
|
||||||
|
@ -2649,11 +2660,7 @@ int CServer::Run()
|
||||||
GameServer()->OnShutdown();
|
GameServer()->OnShutdown();
|
||||||
m_pMap->Unload();
|
m_pMap->Unload();
|
||||||
|
|
||||||
for(auto &pCurrentMapData : m_apCurrentMapData)
|
|
||||||
free(pCurrentMapData);
|
|
||||||
|
|
||||||
DbPool()->OnShutdown();
|
DbPool()->OnShutdown();
|
||||||
delete m_pConnectionPool;
|
|
||||||
|
|
||||||
#if defined(CONF_UPNP)
|
#if defined(CONF_UPNP)
|
||||||
m_UPnP.Shutdown();
|
m_UPnP.Shutdown();
|
||||||
|
|
|
@ -257,6 +257,7 @@ public:
|
||||||
array<CNameBan> m_aNameBans;
|
array<CNameBan> m_aNameBans;
|
||||||
|
|
||||||
CServer();
|
CServer();
|
||||||
|
~CServer();
|
||||||
|
|
||||||
bool IsClientNameAvailable(int ClientID, const char *pNameRequest);
|
bool IsClientNameAvailable(int ClientID, const char *pNameRequest);
|
||||||
bool SetClientNameImpl(int ClientID, const char *pNameRequest, bool Set);
|
bool SetClientNameImpl(int ClientID, const char *pNameRequest, bool Set);
|
||||||
|
|
Loading…
Reference in a new issue