From 39f81682b1450b05e156c34a1426baa73bb9c67b Mon Sep 17 00:00:00 2001 From: brain Date: Wed, 16 Aug 2006 08:49:03 +0000 Subject: Because the iterator can be whacked (and the item) inside of SetBan, make copies git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4921 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_timedbans.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/modules') diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp index bb1db4f63..61c0abaa3 100644 --- a/src/modules/m_timedbans.cpp +++ b/src/modules/m_timedbans.cpp @@ -166,9 +166,9 @@ class ModuleTimedBans : public Module { cr->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :Timed ban on %s expired.", cr->name, i->mask.c_str()); const char *setban[3]; - setban[0] = i->channel.c_str(); + setban[0] = strdup(i->channel.c_str()); setban[1] = "-b"; - setban[2] = i->mask.c_str(); + setban[2] = strdup(i->mask.c_str()); // kludge alert! // ::SendMode expects a userrec* to send the numeric replies // back to, so we create it a fake user that isnt in the user @@ -179,12 +179,14 @@ class ModuleTimedBans : public Module ServerInstance->SendMode(setban,3,temp); /* FIX: Send mode remotely*/ std::deque n; - n.push_back(i->channel); + n.push_back(setban[0]); n.push_back("-b"); - n.push_back(i->mask); + n.push_back(setban[2]); Event rmode((char *)&n, NULL, "send_mode"); rmode.Send(ServerInstance); DELETE(temp); + free(setban[0]); + free(setban[2]); } else { -- cgit v1.2.3