From c3a15bf6954fde36c42600fa79da53e3e0ebe4f6 Mon Sep 17 00:00:00 2001 From: Brian Date: Sun, 29 May 2011 18:37:05 -0600 Subject: [PATCH] Add CChan::TrimBuffer and have SetBufferCount call it. --- Chan.cpp | 7 +++++++ Chan.h | 1 + 2 files changed, 8 insertions(+) diff --git a/Chan.cpp b/Chan.cpp index bec60c34..fd7c8c33 100644 --- a/Chan.cpp +++ b/Chan.cpp @@ -112,6 +112,7 @@ bool CChan::SetBufferCount(unsigned int u, bool bForce) { if (!bForce && u > CZNC::Get().GetMaxBufferSize()) return false; m_uBufferCount = u; + TrimBuffer(m_uBufferCount); return true; } @@ -534,6 +535,12 @@ void CChan::ClearBuffer() { m_vsBuffer.clear(); } +void CChan::TrimBuffer(const unsigned int uMax) { + if (m_vsBuffer.size() > uMax) { + m_vsBuffer.erase(m_vsBuffer.begin(), m_vsBuffer.begin() + (uMax - m_vsBuffer.size())); + } +} + void CChan::SendBuffer(CClient* pClient) { if (m_pUser && m_pUser->IsUserAttached()) { const vector& vsBuffer = GetBuffer(); diff --git a/Chan.h b/Chan.h index e633508f..5d3ad5b0 100644 --- a/Chan.h +++ b/Chan.h @@ -88,6 +88,7 @@ public: // Buffer int AddBuffer(const CString& sLine); void ClearBuffer(); + void TrimBuffer(const unsigned int uMax); void SendBuffer(CClient* pClient); // !Buffer