From 7e785ed1012b828c834bbe1d1e13aec63fac2741 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 23 May 2025 23:52:30 +0200 Subject: [PATCH] state: fix undefined membership when handling MODE Happens when the server sends a MODE message which refers to a user who left the channel. --- state.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/state.js b/state.js index 52ed1df..b09b913 100644 --- a/state.js +++ b/state.js @@ -670,12 +670,16 @@ export const State = { let members = new irc.CaseMapMap(buf.members); irc.forEachChannelModeUpdate(msg, client.isupport, (mode, add, arg) => { - if (prefixByMode.has(mode)) { - let nick = arg; - let membership = members.get(nick); - let letter = prefixByMode.get(mode); - members.set(nick, updateMembership(membership, letter, add, client)); + if (!prefixByMode.has(mode)) { + return; } + let nick = arg; + let membership = members.get(nick); + if (membership === undefined) { + return; + } + let letter = prefixByMode.get(mode); + members.set(nick, updateMembership(membership, letter, add, client)); }); return { members };