From a941f9bde0c5ed766f7c308c45a2396177f1bc1d Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 14 Apr 2016 20:15:53 -0400 Subject: Remove memos from memoinfo more reliably --- src/memos.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src') 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::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(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::iterator it = std::find(memos->begin(), memos->end(), m); + if (it != memos->end()) + memos->erase(it); + + delete m; } bool MemoInfo::HasIgnore(User *u) -- cgit