diff --git a/User.cpp b/User.cpp index 223d3cf3..3eaeb25e 100644 --- a/User.cpp +++ b/User.cpp @@ -60,20 +60,18 @@ CUser::CUser(const CString& sUserName) { } CUser::~CUser() { - for (unsigned int a = 0; a < m_vServers.size(); a++) { - delete m_vServers[a]; - } - - for (unsigned int b = 0; b < m_vChans.size(); b++) { - delete m_vChans[b]; - } - DelClients(); #ifdef _MODULES DelModules(); #endif + DelServers(); + + for (unsigned int b = 0; b < m_vChans.size(); b++) { + delete m_vChans[b]; + } + CZNC::Get().GetManager().DelCronByAddr(m_pKeepNickTimer); CZNC::Get().GetManager().DelCronByAddr(m_pJoinTimer); CZNC::Get().GetManager().DelCronByAddr(m_pMiscTimer); @@ -97,6 +95,15 @@ void CUser::DelClients() { m_vClients.clear(); } +void CUser::DelServers() +{ + for (unsigned int a = 0; a < m_vServers.size(); a++) { + delete m_vServers[a]; + } + + m_vServers.clear(); +} + void CUser::IRCConnected(CIRCSock* pIRCSock) { for (unsigned int a = 0; a < m_vClients.size(); a++) { m_vClients[a]->IRCConnected(pIRCSock); @@ -334,7 +341,7 @@ bool CUser::Clone(const CUser& User, CString& sErrorRet) { sServer = pCurServ->GetName(); } - m_vServers.clear(); + DelServers(); for (a = 0; a < vServers.size(); a++) { CServer* pServer = vServers[a]; diff --git a/User.h b/User.h index 925598ce..d28cdba4 100644 --- a/User.h +++ b/User.h @@ -58,6 +58,7 @@ public: bool ConnectPaused(); void DelClients(); + void DelServers(); #ifdef _MODULES void DelModules();