summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/irc/irc_client.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/irc/irc_client.cpp b/src/irc/irc_client.cpp
index ba593c9..7776c8d 100644
--- a/src/irc/irc_client.cpp
+++ b/src/irc/irc_client.cpp
@@ -1017,19 +1017,17 @@ void IrcClient::on_quit(const IrcMessage& message)
const std::string& chan_name = pair.first;
IrcChannel* channel = pair.second.get();
const IrcUser* user = channel->find_user(message.prefix);
+ if (!user)
+ continue;
bool self = false;
if (user == channel->get_self())
self = true;
- if (user)
- {
- std::string nick = user->nick;
- channel->remove_user(user);
- Iid iid;
- iid.set_local(chan_name);
- iid.set_server(this->hostname);
- iid.type = Iid::Type::Channel;
- this->bridge.send_muc_leave(iid, std::move(nick), txt, self, false);
- }
+ Iid iid;
+ iid.set_local(chan_name);
+ iid.set_server(this->hostname);
+ iid.type = Iid::Type::Channel;
+ this->bridge.send_muc_leave(iid, user->nick, txt, self, false);
+ channel->remove_user(user);
}
}