summaryrefslogtreecommitdiff
path: root/src/channels.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2016-03-19 16:21:40 -0400
committerAdam <Adam@anope.org>2016-10-02 13:44:30 -0400
commit117b68a47fd9637d71229f943f9e3bf3b14c26d3 (patch)
treea4a14ef4c06e9c6f15460f576a3f24f32c35a777 /src/channels.cpp
parent4c5ee25bc68617ce284fcf17cfd7022d561d9210 (diff)
Also defer channel deletion when processing sjoins
(cherry picked from commit 79e7c3f98a57b7cffc46d9a7dc250a0e6e25fc98)
Diffstat (limited to 'src/channels.cpp')
-rw-r--r--src/channels.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/channels.cpp b/src/channels.cpp
index 3072e1fac..98ecfe127 100644
--- a/src/channels.cpp
+++ b/src/channels.cpp
@@ -169,8 +169,7 @@ void Channel::DeleteUser(User *user)
Log(LOG_DEBUG) << "Channel::DeleteUser() tried to delete non-existent channel " << this->name << " from " << user->nick << "'s channel list";
delete cu;
- if (std::find(deleting.begin(), deleting.end(), this) == deleting.end())
- deleting.push_back(this);
+ QueueForDeletion();
}
ChanUserContainer *Channel::FindUser(User *u) const
@@ -925,6 +924,12 @@ Channel *Channel::FindOrCreate(const Anope::string &name, bool &created, time_t
return chan;
}
+void Channel::QueueForDeletion()
+{
+ if (std::find(deleting.begin(), deleting.end(), this) == deleting.end())
+ deleting.push_back(this);
+}
+
void Channel::DeleteChannels()
{
for (unsigned int i = 0; i < deleting.size(); ++i)