From 80f4f317b247ee3756fbc001495310b2f7c4e997 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 10 Oct 2011 15:04:23 -0400 Subject: Put serialized_items on the heap to prevent weird crashes on shutdown from the list being destructed before members in it --- include/serialize.h | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'include') diff --git a/include/serialize.h b/include/serialize.h index e4c6bce1f..ff818a61b 100644 --- a/include/serialize.h +++ b/include/serialize.h @@ -60,7 +60,7 @@ namespace Serialize class SerializableBase; extern std::vector serialized_types; -extern std::list serialized_items; +extern std::list *serialized_items; extern void RegisterTypes(); class SerializableBase @@ -85,11 +85,6 @@ template class Serializable : public SerializableBase { } - ~SerializableAllocator() - { - Unregister(); - } - void Register(const Anope::string &n, int pos = -1) { this->name = n; @@ -127,20 +122,21 @@ template class Serializable : public SerializableBase protected: Serializable() { - serialized_items.push_front(this); - this->s_iter = serialized_items.begin(); + if (serialized_items == NULL) + serialized_items = new std::list(); + serialized_items->push_front(this); + this->s_iter = serialized_items->begin(); } Serializable(const Serializable &) { - serialized_items.push_front(this); - this->s_iter = serialized_items.begin(); + serialized_items->push_front(this); + this->s_iter = serialized_items->begin(); } ~Serializable() { - if (!serialized_items.empty()) - serialized_items.erase(this->s_iter); + serialized_items->erase(this->s_iter); } public: -- cgit