summaryrefslogtreecommitdiff
path: root/src/channels.cpp
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-07-11 14:44:17 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-07-11 14:44:17 +0000
commit4e599dd4fbfe5abc0d60a05008344e35e6bc870d (patch)
tree1e9dd14e5ba82788428a43b5e0d8ab6c7725de7b /src/channels.cpp
parent19331dee13bf1021873dc9d2e3d72b56870c499c (diff)
Fix m_nopartmsg to work via API modification, involves a string copy that won't last too long. Compiles cleanly.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9953 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/channels.cpp')
-rw-r--r--src/channels.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/channels.cpp b/src/channels.cpp
index 219979dc9..fbec272b3 100644
--- a/src/channels.cpp
+++ b/src/channels.cpp
@@ -482,10 +482,18 @@ bool Channel::IsExtBanned(User *user, char type)
/* Channel::PartUser
* remove a channel from a users record, and return the number of users left.
* Therefore, if this function returns 0 the caller should delete the Channel.
+ *
+ * XXX: bleh, string copy of reason, fixme! -- w00t
*/
long Channel::PartUser(User *user, const char* reason)
{
bool silent = false;
+ std::string freason;
+
+ if (reason)
+ freason = reason;
+ else
+ freason = "";
if (!user)
return this->GetUserCounter();
@@ -493,7 +501,7 @@ long Channel::PartUser(User *user, const char* reason)
UCListIter i = user->chans.find(this);
if (i != user->chans.end())
{
- FOREACH_MOD(I_OnUserPart,OnUserPart(user, this, reason ? reason : "", silent));
+ FOREACH_MOD(I_OnUserPart,OnUserPart(user, this, freason, silent));
if (!silent)
this->WriteChannel(user, "PART %s%s%s", this->name.c_str(), reason ? " :" : "", reason ? reason : "");