diff --git a/include/znc/main.h b/include/znc/main.h index 4f701fa905..254937e3b1 100644 --- a/include/znc/main.h +++ b/include/znc/main.h @@ -77,30 +77,30 @@ extern bool ZNC_NO_NEED_TO_DO_ANYTHING_ON_MODULE_CALL_EXITER; #define _USERMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER) \ do { \ - assert(macUSER != NULL); \ bool bGlobalExited = false; \ _GLOBALMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, &bGlobalExited); \ if (bGlobalExited) { \ *macEXITER = true; \ break; \ } \ - CModules& UMods = macUSER->GetModules(); \ - CIRCNetwork* pOldUNetwork = UMods.GetNetwork(); \ - CClient* pOldUClient = UMods.GetClient(); \ - UMods.SetNetwork(macNETWORK); \ - UMods.SetClient(macCLIENT); \ - if (UMods.macFUNC) { \ - UMods.SetNetwork(pOldUNetwork); \ - UMods.SetClient(pOldUClient); \ - *macEXITER = true; \ - } \ - UMods.SetNetwork(pOldUNetwork); \ - UMods.SetClient(pOldUClient); \ + if (macUSER != nullptr) { \ + CModules& UMods = macUSER->GetModules(); \ + CIRCNetwork* pOldUNetwork = UMods.GetNetwork(); \ + CClient* pOldUClient = UMods.GetClient(); \ + UMods.SetNetwork(macNETWORK); \ + UMods.SetClient(macCLIENT); \ + if (UMods.macFUNC) { \ + UMods.SetNetwork(pOldUNetwork); \ + UMods.SetClient(pOldUClient); \ + *macEXITER = true; \ + } \ + UMods.SetNetwork(pOldUNetwork); \ + UMods.SetClient(pOldUClient); \ + } \ } while (false) #define NETWORKMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER) \ do { \ - assert(macUSER != NULL); \ bool bUserExited = false; \ _USERMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, &bUserExited); \ if (bUserExited) { \ diff --git a/src/Client.cpp b/src/Client.cpp index e52fa63ba7..5c68d7d97c 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -770,7 +770,7 @@ CString CClient::GetFullName() const { void CClient::PutClient(const CString& sLine) { bool bReturn = false; CString sCopy = sLine; - ALLMODULECALL(OnSendToClient(sCopy, *this), &bReturn); + NETWORKMODULECALL(OnSendToClient(sCopy, *this), m_pUser, m_pNetwork, this, &bReturn); if (bReturn) return; DEBUG("(" << GetFullName() << ") ZNC -> CLI [" << sCopy << "]"); Write(sCopy + "\r\n"); diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp index e11a0afd1f..f37b52edea 100644 --- a/src/IRCSock.cpp +++ b/src/IRCSock.cpp @@ -1049,7 +1049,7 @@ void CIRCSock::TrySend() { m_iSendsAllowed--; bool bSkip = false; CString& sLine = m_vsSendQueue.front(); - ALLMODULECALL(OnSendToIRC(sLine), &bSkip); + IRCSOCKMODULECALL(OnSendToIRC(sLine), &bSkip); if (!bSkip) {; DEBUG("(" << m_pNetwork->GetUser()->GetUserName() << "/" << m_pNetwork->GetName() << ") ZNC -> IRC [" << sLine << "]"); Write(sLine + "\r\n");