summaryrefslogtreecommitdiff
path: root/modules/core/ms_del.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-10-27 22:29:34 -0400
committerAdam <Adam@anope.org>2010-10-27 22:29:34 -0400
commita26f119bc8666642a54564763626e52e5c72b030 (patch)
treedbc5a6e06105c4111338d61a8739c4ea9c951e1b /modules/core/ms_del.cpp
parenta79da4bba11ef6fec0ef010a7900c742c2e358ad (diff)
Do not store memo number in memo structs, fixes some bugs with deleting memos
Diffstat (limited to 'modules/core/ms_del.cpp')
-rw-r--r--modules/core/ms_del.cpp26
1 files changed, 10 insertions, 16 deletions
diff --git a/modules/core/ms_del.cpp b/modules/core/ms_del.cpp
index 4d9a8ec13..2d69fba5e 100644
--- a/modules/core/ms_del.cpp
+++ b/modules/core/ms_del.cpp
@@ -29,11 +29,12 @@ class MemoDelCallback : public NumberList
return;
if (ci)
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, Number - 1));
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, mi->memos[Number - 1]));
else
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(u->Account(), mi, Number - 1));
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(u->Account(), mi, mi->memos[Number - 1]));
- delmemo(mi, Number - 1);
+ mi->Del(Number - 1);
+ u->SendMessage(MemoServ, MEMO_DELETED_ONE, Number);
}
};
@@ -50,7 +51,6 @@ class CommandMSDel : public Command
ChannelInfo *ci = NULL;
Anope::string numstr = !params.empty() ? params[0] : "", chan;
unsigned i, end;
- int last;
if (!numstr.empty() && numstr[0] == '#')
{
@@ -95,21 +95,19 @@ class CommandMSDel : public Command
else if (numstr.equals_ci("LAST"))
{
/* Delete last memo. */
- for (i = 0, end = mi->memos.size(); i < end; ++i)
- last = mi->memos[i]->number;
if (ci)
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, last));
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, mi->memos[mi->memos.size() - 1]));
else
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(u->Account(), mi, last));
- delmemo(mi, last);
- u->SendMessage(MemoServ, MEMO_DELETED_ONE, last);
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(u->Account(), mi, mi->memos[mi->memos.size() - 1]));
+ mi->Del(mi->memos[mi->memos.size() - 1]);
+ u->SendMessage(MemoServ, MEMO_DELETED_ONE, mi->memos.size() + 1);
}
else
{
if (ci)
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, 0));
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(ci, mi, NULL));
else
- FOREACH_MOD(I_OnMemoDel, OnMemoDel(u->Account(), mi, 0));
+ FOREACH_MOD(I_OnMemoDel, OnMemoDel(u->Account(), mi, NULL));
/* Delete all memos. */
for (i = 0, end = mi->memos.size(); i < end; ++i)
delete mi->memos[i];
@@ -119,10 +117,6 @@ class CommandMSDel : public Command
else
u->SendMessage(MemoServ, MEMO_DELETED_ALL);
}
-
- /* Reset the order */
- for (i = 0, end = mi->memos.size(); i < end; ++i)
- mi->memos[i]->number = i + 1;
}
return MOD_CONT;
}