]> jfr.im git - irc/rizon/znc.git/commitdiff
Add CChan::TrimBuffer and have SetBufferCount call it.
authorBrian <redacted>
Mon, 30 May 2011 00:37:05 +0000 (18:37 -0600)
committerBrian <redacted>
Mon, 30 May 2011 00:37:05 +0000 (18:37 -0600)
Chan.cpp
Chan.h

index bec60c344157cbe8d40876ff73940341f37cfbe0..fd7c8c3364b82ca5ab81164022bdf264d9f31b4e 100644 (file)
--- 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<CString>& vsBuffer = GetBuffer();
diff --git a/Chan.h b/Chan.h
index e633508f6282c314d0d7f82ab9078110015f375a..5d3ad5b0c1bc0e7dd34c01a309c17352a1041332 100644 (file)
--- 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