1
0
mirror of https://github.com/anope/anope.git synced 2026-07-03 03:03:13 +02:00

Base has to destruct before Extensible does because objects that destruct due to Extensible destructing don't have their references to the already destroyed object for Base invalidated. (fixed for NickAlias and NickCore)

This commit is contained in:
DukePyrolator
2012-10-21 18:29:10 +02:00
parent 727c3d5b75
commit d5b2f9cfa7
3 changed files with 6 additions and 4 deletions
+4 -2
View File
@@ -109,7 +109,8 @@ const Anope::string NickCoreFlagStrings[] = {
"MEMO_MAIL", "HIDE_STATUS", "SUSPENDED", "AUTOOP", "FORBIDDEN", "UNCONFIRMED", "STATS", ""
};
class CoreExport NickAlias : public Extensible, public Flags<NickNameFlag, NS_END>, public Serializable
/* It matters that Base is here before Extensible (it is inherited by Serializable) */
class CoreExport NickAlias : public Serializable, public Extensible, public Flags<NickNameFlag, NS_END>
{
Anope::string vhost_ident, vhost_host, vhost_creator;
time_t vhost_created;
@@ -187,7 +188,8 @@ class CoreExport NickAlias : public Extensible, public Flags<NickNameFlag, NS_EN
time_t GetVhostCreated() const;
};
class CoreExport NickCore : public Extensible, public Flags<NickCoreFlag, NI_END>, public Serializable
/* It matters that Base is here before Extensible (it is inherited by Serializable) */
class CoreExport NickCore : public Serializable, public Extensible, public Flags<NickCoreFlag, NI_END>
{
public:
/** Default constructor
+1 -1
View File
@@ -29,7 +29,7 @@ static nickservheld_map NickServHelds;
* @param nick The nick
* @param nickcore The nickcore for this nick
*/
NickAlias::NickAlias(const Anope::string &nickname, NickCore* nickcore) : Flags<NickNameFlag, NS_END>(NickNameFlagStrings), Serializable("NickAlias")
NickAlias::NickAlias(const Anope::string &nickname, NickCore* nickcore) : Serializable("NickAlias"), Flags<NickNameFlag, NS_END>(NickNameFlagStrings)
{
if (nickname.empty())
throw CoreException("Empty nick passed to NickAlias constructor");
+1 -1
View File
@@ -19,7 +19,7 @@ serialize_checker<nickcore_map> NickCoreList("NickCore");
/** Default constructor
* @param display The display nick
*/
NickCore::NickCore(const Anope::string &coredisplay) : Flags<NickCoreFlag, NI_END>(NickCoreFlagStrings), Serializable("NickCore")
NickCore::NickCore(const Anope::string &coredisplay) : Serializable("NickCore"), Flags<NickCoreFlag, NI_END>(NickCoreFlagStrings)
{
if (coredisplay.empty())
throw CoreException("Empty display passed to NickCore constructor");