From 2a5db6722b912a8518eaa6f5d68212ef745fd37c Mon Sep 17 00:00:00 2001 From: prozacx Date: Thu, 26 May 2005 20:58:52 +0000 Subject: [PATCH] Fixed ModeChange() to not add list type modes git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@367 726aef4b-f618-498e-8847-2d620e286838 --- Chan.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Chan.cpp b/Chan.cpp index 51d0ed2b..c5d189ff 100644 --- a/Chan.cpp +++ b/Chan.cpp @@ -174,14 +174,13 @@ void CChan::ModeChange(const CString& sModes, const CString& sOpNick) { for (unsigned int a = 0; a < sModeArg.size(); a++) { const unsigned char& uMode = sModeArg[a]; - CString sArg; if (uMode == '+') { bAdd = true; } else if (uMode == '-') { bAdd = false; } else if (m_pUser->GetIRCSock()->IsPermMode(uMode)) { - sArg = GetModeArg(sArgs); + CString sArg = GetModeArg(sArgs); CNick* pNick = FindNick(sArg); if (pNick) { unsigned char uPerm = m_pUser->GetIRCSock()->GetPermFromMode(uMode); @@ -228,8 +227,12 @@ void CChan::ModeChange(const CString& sModes, const CString& sOpNick) { } } } else { + bool bList = false; + CString sArg; + switch (m_pUser->GetIRCSock()->GetModeType(uMode)) { case CIRCSock::ListArg: + bList = true; sArg = GetModeArg(sArgs); break; case CIRCSock::HasArg: @@ -249,7 +252,9 @@ void CChan::ModeChange(const CString& sModes, const CString& sOpNick) { m_sCurKey = (bAdd) ? sArg : ""; } - (bAdd) ? AddMode(uMode, sArg) : RemMode(uMode, sArg); + if (!bList) { + (bAdd) ? AddMode(uMode, sArg) : RemMode(uMode, sArg); + } } } }