From ab6cd3b26caf127d1052e58e9f906d8ed5c3d986 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 19 Dec 2013 20:35:09 -0500 Subject: Fix a few commands not being able to find non conf opers --- src/messages.cpp | 4 ++-- src/opertype.cpp | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/messages.cpp b/src/messages.cpp index b757dde8f..639b07a58 100644 --- a/src/messages.cpp +++ b/src/messages.cpp @@ -405,9 +405,9 @@ void Stats::Run(MessageSource &source, const std::vector ¶ms) IRCD->SendNumeric(219, source.GetSource(), "%c :End of /STATS report.", params[0][0]); else { - for (unsigned i = 0; i < Config->Opers.size(); ++i) + for (unsigned i = 0; i < Oper::opers.size(); ++i) { - Oper *o = Config->Opers[i]; + Oper *o = Oper::opers[i]; const NickAlias *na = NickAlias::Find(o->name); if (na) diff --git a/src/opertype.cpp b/src/opertype.cpp index 0db17464d..153b735ab 100644 --- a/src/opertype.cpp +++ b/src/opertype.cpp @@ -12,11 +12,25 @@ #include "opertype.h" #include "config.h" +std::vector Oper::opers; + +Oper::Oper(const Anope::string &n, OperType *o) : name(n), ot(o), require_oper(false), config(false) +{ + opers.push_back(this); +} + +Oper::~Oper() +{ + std::vector::iterator it = std::find(opers.begin(), opers.end(), this); + if (it != opers.end()) + opers.erase(it); +} + Oper *Oper::Find(const Anope::string &name) { - for (unsigned i = 0; i < Config->Opers.size(); ++i) + for (unsigned i = 0; i < opers.size(); ++i) { - Oper *o = Config->Opers[i]; + Oper *o = opers[i]; if (o->name.equals_ci(name)) return o; -- cgit