diff --git a/include/znc/IRCNetwork.h b/include/znc/IRCNetwork.h index 93ae384e..975b8524 100644 --- a/include/znc/IRCNetwork.h +++ b/include/znc/IRCNetwork.h @@ -167,6 +167,8 @@ public: void AddNoticeBuffer(const CString& sFormat, const CString& sText = "") { m_NoticeBuffer.AddLine(sFormat, sText); } void UpdateNoticeBuffer(const CString& sMatch, const CString& sFormat, const CString& sText = "") { m_NoticeBuffer.UpdateLine(sMatch, sFormat, sText); } void ClearNoticeBuffer() { m_NoticeBuffer.Clear(); } + + void ClearQueryBuffer(); // !Buffers // la diff --git a/src/ClientCommand.cpp b/src/ClientCommand.cpp index 4f1ca604..153660c8 100644 --- a/src/ClientCommand.cpp +++ b/src/ClientCommand.cpp @@ -1386,9 +1386,7 @@ void CClient::UserCommand(CString& sLine) { return; } - for (CQuery* pQuery : m_pNetwork->GetQueries()) { - m_pNetwork->DelQuery(pQuery->GetName()); - } + m_pNetwork->ClearQueryBuffer(); PutStatus("All query buffers have been cleared"); } else if (sCommand.Equals("CLEARALLBUFFERS")) { if (!m_pNetwork) { @@ -1399,9 +1397,7 @@ void CClient::UserCommand(CString& sLine) { for (CChan* pChan : m_pNetwork->GetChans()) { pChan->ClearBuffer(); } - for (CQuery* pQuery : m_pNetwork->GetQueries()) { - m_pNetwork->DelQuery(pQuery->GetName()); - } + m_pNetwork->ClearQueryBuffer(); PutStatus("All buffers have been cleared"); } else if (sCommand.Equals("SETBUFFER")) { if (!m_pNetwork) { diff --git a/src/IRCNetwork.cpp b/src/IRCNetwork.cpp index a8a59a95..4d3146e8 100644 --- a/src/IRCNetwork.cpp +++ b/src/IRCNetwork.cpp @@ -23,6 +23,7 @@ #include #include #include +#include using std::vector; using std::set; @@ -1279,6 +1280,11 @@ bool CIRCNetwork::PutIRC(const CString& sLine) { return true; } +void CIRCNetwork::ClearQueryBuffer() { + std::for_each(m_vQueries.begin(), m_vQueries.end(), std::default_delete()); + m_vQueries.clear(); +} + const CString& CIRCNetwork::GetNick(const bool bAllowDefault) const { if (m_sNick.empty()) { return m_pUser->GetNick(bAllowDefault);