summaryrefslogtreecommitdiff
path: root/modules/commands/ms_cancel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/commands/ms_cancel.cpp')
-rw-r--r--modules/commands/ms_cancel.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/modules/commands/ms_cancel.cpp b/modules/commands/ms_cancel.cpp
index 46f410aec..059ca2f06 100644
--- a/modules/commands/ms_cancel.cpp
+++ b/modules/commands/ms_cancel.cpp
@@ -39,11 +39,20 @@ class CommandMSCancel : public Command
source.Reply(ischan ? CHAN_X_NOT_REGISTERED : _(NICK_X_NOT_REGISTERED), nname.c_str());
else
{
- for (int i = mi->memos.size() - 1; i >= 0; --i)
- if (mi->memos[i]->HasFlag(MF_UNREAD) && u->Account()->display.equals_ci(mi->memos[i]->sender))
+ ChannelInfo *ci;
+ NickAlias *na;
+ if (ischan)
+ ci = cs_findchan(nname);
+ else
+ na = findnick(nname);
+ for (int i = mi->memos->size() - 1; i >= 0; --i)
+ if (mi->GetMemo(i)->HasFlag(MF_UNREAD) && u->Account()->display.equals_ci(mi->GetMemo(i)->sender))
{
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(findnick(nname)->nc, mi, mi->memos[i]));
- mi->Del(mi->memos[i]);
+ if (ischan)
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, mi->GetMemo(i)));
+ else
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(na->nc, mi, mi->GetMemo(i)));
+ mi->Del(i);
source.Reply(_("Last memo to \002%s\002 has been cancelled."), nname.c_str());
return;
}