summaryrefslogtreecommitdiff
path: root/src/memos.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2016-04-14 20:15:53 -0400
committerAdam <Adam@anope.org>2016-04-14 20:15:53 -0400
commita941f9bde0c5ed766f7c308c45a2396177f1bc1d (patch)
tree038fd7e061a8ec3ff9ee92860ad97745cf9242b3 /src/memos.cpp
parent21e1913c0f1a2f4818e4c704548a08748f28f146 (diff)
Remove memos from memoinfo more reliably
Diffstat (limited to 'src/memos.cpp')
-rw-r--r--src/memos.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/memos.cpp b/src/memos.cpp
index 0f591757b..bf8f0eb73 100644
--- a/src/memos.cpp
+++ b/src/memos.cpp
@@ -19,13 +19,12 @@
Memo::Memo() : Serializable("Memo")
{
+ mi = NULL;
unread = receipt = false;
}
Memo::~Memo()
{
- bool ischan;
- MemoInfo *mi = MemoInfo::GetMemoInfo(this->owner, ischan);
if (mi)
{
std::vector<Memo *>::iterator it = std::find(mi->memos->begin(), mi->memos->end(), this);
@@ -60,7 +59,10 @@ Serializable* Memo::Unserialize(Serializable *obj, Serialize::Data &data)
if (obj)
m = anope_dynamic_static_cast<Memo *>(obj);
else
+ {
m = new Memo();
+ m->mi = mi;
+ }
m->owner = owner;
data["time"] >> m->time;
@@ -99,7 +101,14 @@ void MemoInfo::Del(unsigned index)
{
if (index >= this->memos->size())
return;
- delete this->GetMemo(index);
+
+ Memo *m = this->GetMemo(index);
+
+ std::vector<Memo *>::iterator it = std::find(memos->begin(), memos->end(), m);
+ if (it != memos->end())
+ memos->erase(it);
+
+ delete m;
}
bool MemoInfo::HasIgnore(User *u)