diff --git a/include/serialize.h b/include/serialize.h index 441c4da8c..de937839d 100644 --- a/include/serialize.h +++ b/include/serialize.h @@ -216,7 +216,7 @@ class serialize_obj : public dynamic_reference_base this->ref->DelReference(this); } - virtual operator bool() const + inline operator bool() const { if (!this->invalid) return this->ref != NULL; @@ -235,7 +235,7 @@ class serialize_obj : public dynamic_reference_base this->ref->AddReference(this); } - virtual inline operator T*() const + inline operator T*() const { if (!this->invalid) { @@ -248,7 +248,7 @@ class serialize_obj : public dynamic_reference_base return NULL; } - virtual inline T* operator*() const + inline T* operator*() const { if (!this->invalid) { @@ -261,7 +261,7 @@ class serialize_obj : public dynamic_reference_base return NULL; } - virtual inline T* operator->() const + inline T* operator->() const { if (!this->invalid) { diff --git a/src/access.cpp b/src/access.cpp index 189e275a3..40e53a305 100644 --- a/src/access.cpp +++ b/src/access.cpp @@ -118,8 +118,7 @@ Serializable* ChanAccess::unserialize(Serializable *obj, Serialize::Data &data) if (obj) access = anope_dynamic_static_cast(obj); else - access = const_cast(aprovider->Create()); - access->provider = aprovider; + access = aprovider->Create(); access->ci = ci; data["mask"] >> access->mask; data["creator"] >> access->creator; diff --git a/src/misc.cpp b/src/misc.cpp index fbc110ef3..e5ad71d45 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -669,7 +669,7 @@ bool Anope::Match(const Anope::string &str, const Anope::string &mask, bool case } } - if (mask[m] == '*') + if (m < mask_len && mask[m] == '*') ++m; return m == mask_len; diff --git a/src/regchannel.cpp b/src/regchannel.cpp index b113dfb2e..99554a6d5 100644 --- a/src/regchannel.cpp +++ b/src/regchannel.cpp @@ -638,7 +638,6 @@ void ChannelInfo::EraseAccess(const ChanAccess *taccess) { if (this->GetAccess(i) == taccess) { - this->GetAccess(i)->destroy(); this->EraseAccess(i); break; }