summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2010-07-09 00:20:00 -0400
committerAdam <Adam@anope.org>2010-07-09 00:20:00 -0400
commit7e20659522abae28509a38f2010a5508eae3b6c3 (patch)
tree3b81fd041f223e446c875c46f9a182ebb1815943
parent1cf4ebb231f2f7770b717a5e176d7bb5cbc66284 (diff)
No need to allocate the numberlist callback classes with new
-rw-r--r--include/services.h2
-rw-r--r--src/core/bs_badwords.cpp10
-rw-r--r--src/core/cs_access.cpp15
-rw-r--r--src/core/cs_akick.cpp15
-rw-r--r--src/core/cs_xop.cpp10
-rw-r--r--src/core/ms_del.cpp5
-rw-r--r--src/core/ms_list.cpp5
-rw-r--r--src/core/ms_read.cpp5
-rw-r--r--src/core/os_akill.cpp15
-rw-r--r--src/core/os_session.cpp15
-rw-r--r--src/core/os_snline.cpp15
-rw-r--r--src/core/os_sqline.cpp15
-rw-r--r--src/core/os_szline.cpp15
-rw-r--r--src/misc.cpp9
14 files changed, 120 insertions, 31 deletions
diff --git a/include/services.h b/include/services.h
index 36a0937c3..d42926245 100644
--- a/include/services.h
+++ b/include/services.h
@@ -1172,6 +1172,8 @@ class ChanServTimer : public Timer
class CoreExport NumberList
{
private:
+ bool is_valid;
+
std::set<unsigned> numbers;
bool desc;
diff --git a/src/core/bs_badwords.cpp b/src/core/bs_badwords.cpp
index b77607f79..822847a6a 100644
--- a/src/core/bs_badwords.cpp
+++ b/src/core/bs_badwords.cpp
@@ -87,7 +87,10 @@ class CommandBSBadwords : public Command
if (!ci->GetBadWordCount())
notice_lang(Config.s_BotServ, u, BOT_BADWORDS_LIST_EMPTY, ci->name.c_str());
else if (!word.empty() && strspn(word.c_str(), "1234567890,-") == word.length())
- (new BadwordsListCallback(u, ci, word.c_str()))->Process();
+ {
+ BadwordsListCallback list(u, ci, word.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
@@ -164,7 +167,10 @@ class CommandBSBadwords : public Command
{
/* Special case: is it a number/list? Only do search if it isn't. */
if (!word.empty() && isdigit(word[0]) && strspn(word.c_str(), "1234567890,-") == word.length())
- (new BadwordsDelCallback(u, ci, word.c_str()))->Process();
+ {
+ BadwordsDelCallback list(u, ci, word.c_str());
+ list.Process();
+ }
else
{
unsigned i, end;
diff --git a/src/core/cs_access.cpp b/src/core/cs_access.cpp
index da919c95a..514771d57 100644
--- a/src/core/cs_access.cpp
+++ b/src/core/cs_access.cpp
@@ -243,7 +243,10 @@ class CommandCSAccess : public Command
if (!ci->GetAccessCount())
notice_lang(Config.s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str());
else if (isdigit(*nick.c_str()) && strspn(nick.c_str(), "1234567890,-") == nick.length())
- (new AccessDelCallback(u, ci, nick.c_str()))->Process();
+ {
+ AccessDelCallback list(u, ci, nick.c_str());
+ list.Process();
+ }
else
{
NickAlias *na = findnick(nick);
@@ -289,7 +292,10 @@ class CommandCSAccess : public Command
if (!ci->GetAccessCount())
notice_lang(Config.s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str());
else if (!nick.empty() && strspn(nick.c_str(), "1234567890,-") == nick.length())
- (new AccessListCallback(u, ci, nick.c_str()))->Process();
+ {
+ AccessListCallback list(u, ci, nick.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
@@ -326,7 +332,10 @@ class CommandCSAccess : public Command
if (!ci->GetAccessCount())
notice_lang(Config.s_ChanServ, u, CHAN_ACCESS_LIST_EMPTY, ci->name.c_str());
else if (!nick.empty() && strspn(nick.c_str(), "1234567890,-") == nick.length())
- (new AccessViewCallback(u, ci, nick.c_str()))->Process();
+ {
+ AccessViewCallback list(u, ci, nick.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
diff --git a/src/core/cs_akick.cpp b/src/core/cs_akick.cpp
index d366304d5..771389207 100644
--- a/src/core/cs_akick.cpp
+++ b/src/core/cs_akick.cpp
@@ -365,7 +365,10 @@ class CommandCSAKick : public Command
/* Special case: is it a number/list? Only do search if it isn't. */
if (isdigit(*mask.c_str()) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new AkickDelCallback(u, ci, mask.c_str()))->Process();
+ {
+ AkickDelCallback list(u, ci, mask.c_str());
+ list.Process();
+ }
else
{
NickAlias *na = findnick(mask);
@@ -402,7 +405,10 @@ class CommandCSAKick : public Command
}
if (!mask.empty() && isdigit(*mask.c_str()) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new AkickListCallback(u, ci, mask.c_str()))->Process();
+ {
+ AkickListCallback list(u, ci, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
@@ -444,7 +450,10 @@ class CommandCSAKick : public Command
}
if (!mask.empty() && isdigit(*mask.c_str()) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new AkickViewCallback(u, ci, mask.c_str()))->Process();
+ {
+ AkickViewCallback list(u, ci, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
diff --git a/src/core/cs_xop.cpp b/src/core/cs_xop.cpp
index 8e63b61e9..b4c5cd24d 100644
--- a/src/core/cs_xop.cpp
+++ b/src/core/cs_xop.cpp
@@ -312,7 +312,10 @@ class XOPBase : public Command
/* Special case: is it a number/list? Only do search if it isn't. */
if (isdigit(*nick) && strspn(nick, "1234567890,-") == strlen(nick))
- (new XOPDelCallback(u, ci, messages, nick))->Process();
+ {
+ XOPDelCallback list(u, ci, messages, nick);
+ list.Process();
+ }
else
{
NickAlias *na = findnick(nick);
@@ -372,7 +375,10 @@ class XOPBase : public Command
}
if (nick && strspn(nick, "1234567890,-") == strlen(nick))
- (new XOPListCallback(u, ci, nick, level, messages))->Process();
+ {
+ XOPListCallback list(u, ci, nick, level, messages);
+ list.Process();
+ }
else
{
bool SentHeader = false;
diff --git a/src/core/ms_del.cpp b/src/core/ms_del.cpp
index 7217f3baf..270bac4f3 100644
--- a/src/core/ms_del.cpp
+++ b/src/core/ms_del.cpp
@@ -88,7 +88,10 @@ class CommandMSDel : public Command
else
{
if (isdigit(numstr[0]))
- (new MemoDelCallback(u, ci, mi, numstr.c_str()))->Process();
+ {
+ MemoDelCallback list(u, ci, mi, numstr.c_str());
+ list.Process();
+ }
else if (numstr == "LAST")
{
/* Delete last memo. */
diff --git a/src/core/ms_list.cpp b/src/core/ms_list.cpp
index 3b3a9600f..6630c28db 100644
--- a/src/core/ms_list.cpp
+++ b/src/core/ms_list.cpp
@@ -99,7 +99,10 @@ class CommandMSList : public Command
else
{
if (!param.empty() && isdigit(param[0]))
- (new MemoListCallback(u, ci, mi, param.c_str()))->Process();
+ {
+ MemoListCallback list(u, ci, mi, param.c_str());
+ list.Process();
+ }
else
{
if (!param.empty())
diff --git a/src/core/ms_read.cpp b/src/core/ms_read.cpp
index 7b18f2d9e..d779471b3 100644
--- a/src/core/ms_read.cpp
+++ b/src/core/ms_read.cpp
@@ -119,7 +119,10 @@ class CommandMSRead : public Command
MemoListCallback::DoRead(u, mi, ci, i);
}
else /* number[s] */
- (new MemoListCallback(u, mi, numstr.c_str()))->Process();
+ {
+ MemoListCallback list(u, mi, numstr.c_str());
+ list.Process();
+ }
}
return MOD_CONT;
}
diff --git a/src/core/os_akill.cpp b/src/core/os_akill.cpp
index a6eb05632..f572ec123 100644
--- a/src/core/os_akill.cpp
+++ b/src/core/os_akill.cpp
@@ -234,7 +234,10 @@ class CommandOSAKill : public Command
}
if (isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new AkillDelCallback(u, mask.c_str()))->Process();
+ {
+ AkillDelCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
XLine *x = SGLine->HasEntry(mask);
@@ -268,7 +271,10 @@ class CommandOSAKill : public Command
const ci::string mask = params.size() > 1 ? params[1] : "";
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new AkillListCallback(u, mask.c_str()))->Process();
+ {
+ AkillListCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
@@ -309,7 +315,10 @@ class CommandOSAKill : public Command
const ci::string mask = params.size() > 1 ? params[1] : "";
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new AkillViewCallback(u, mask.c_str()))->Process();
+ {
+ AkillViewCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
diff --git a/src/core/os_session.cpp b/src/core/os_session.cpp
index a0f52877e..4ec73460c 100644
--- a/src/core/os_session.cpp
+++ b/src/core/os_session.cpp
@@ -293,7 +293,10 @@ class CommandOSException : public Command
}
if (isdigit(*mask) && strspn(mask, "1234567890,-") == strlen(mask))
- (new ExceptionDelCallback(u, mask))->Process();
+ {
+ ExceptionDelCallback list(u, mask);
+ list.Process();
+ }
else
{
int deleted = 0;
@@ -382,7 +385,10 @@ class CommandOSException : public Command
const char *mask = params.size() > 1 ? params[1].c_str() : NULL;
if (mask && strspn(mask, "1234567890,-") == strlen(mask))
- (new ExceptionListCallback(u, mask))->Process();
+ {
+ ExceptionListCallback list(u, mask);
+ list.Process();
+ }
else
{
bool SentHeader = false;
@@ -414,7 +420,10 @@ class CommandOSException : public Command
const char *mask = params.size() > 1 ? params[1].c_str() : NULL;
if (mask && strspn(mask, "1234567890,-") == strlen(mask))
- (new ExceptionViewCallback(u, mask))->Process();
+ {
+ ExceptionViewCallback list(u, mask);
+ list.Process();
+ }
else
{
bool SentHeader = false;
diff --git a/src/core/os_snline.cpp b/src/core/os_snline.cpp
index 73706a3dd..6dd252bec 100644
--- a/src/core/os_snline.cpp
+++ b/src/core/os_snline.cpp
@@ -252,7 +252,10 @@ class CommandOSSNLine : public Command
}
if (isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SNLineDelCallback(u, mask.c_str()))->Process();
+ {
+ SNLineDelCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
XLine *x = SNLine->HasEntry(mask);
@@ -286,7 +289,10 @@ class CommandOSSNLine : public Command
const ci::string mask = params.size() > 1 ? params[1] : "";
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SNLineListCallback(u, mask.c_str()))->Process();
+ {
+ SNLineListCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
@@ -327,7 +333,10 @@ class CommandOSSNLine : public Command
const ci::string mask = params.size() > 1 ? params[1] : "";
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SNLineViewCallback(u, mask.c_str()))->Process();
+ {
+ SNLineViewCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
diff --git a/src/core/os_sqline.cpp b/src/core/os_sqline.cpp
index 39755525a..748625d26 100644
--- a/src/core/os_sqline.cpp
+++ b/src/core/os_sqline.cpp
@@ -233,7 +233,10 @@ class CommandOSSQLine : public Command
}
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SQLineDelCallback(u, mask.c_str()))->Process();
+ {
+ SQLineDelCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
XLine *x = SQLine->HasEntry(mask);
@@ -267,7 +270,10 @@ class CommandOSSQLine : public Command
const ci::string mask = params.size() > 1 ? params[1] : "";
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SQLineListCallback(u, mask.c_str()))->Process();
+ {
+ SQLineListCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
@@ -308,7 +314,10 @@ class CommandOSSQLine : public Command
const ci::string mask = params.size() > 1 ? params[1] : "";
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SQLineViewCallback(u, mask.c_str()))->Process();
+ {
+ SQLineViewCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
diff --git a/src/core/os_szline.cpp b/src/core/os_szline.cpp
index 93a6ed38b..3b1a09009 100644
--- a/src/core/os_szline.cpp
+++ b/src/core/os_szline.cpp
@@ -232,7 +232,10 @@ class CommandOSSZLine : public Command
}
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SZLineDelCallback(u, mask.c_str()))->Process();
+ {
+ SZLineDelCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
XLine *x = SZLine->HasEntry(mask);
@@ -266,7 +269,10 @@ class CommandOSSZLine : public Command
const ci::string mask = params.size() > 1 ? params[1] : "";
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SZLineListCallback(u, mask.c_str()))->Process();
+ {
+ SZLineListCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
@@ -305,7 +311,10 @@ class CommandOSSZLine : public Command
const ci::string mask = params.size() > 1 ? params[1] : "";
if (!mask.empty() && isdigit(mask[0]) && strspn(mask.c_str(), "1234567890,-") == mask.length())
- (new SZLineViewCallback(u, mask.c_str()))->Process();
+ {
+ SZLineViewCallback list(u, mask.c_str());
+ list.Process();
+ }
else
{
bool SentHeader = false;
diff --git a/src/misc.cpp b/src/misc.cpp
index e8d6d14f3..eb8b28f83 100644
--- a/src/misc.cpp
+++ b/src/misc.cpp
@@ -223,7 +223,7 @@ const char *merge_args(int argc, char **argv)
/*************************************************************************/
-NumberList::NumberList(const std::string &list, bool descending) : desc(descending)
+NumberList::NumberList(const std::string &list, bool descending) : desc(descending), is_valid(true)
{
char *error;
commasepstream sep(list);
@@ -245,7 +245,7 @@ NumberList::NumberList(const std::string &list, bool descending) : desc(descendi
{
if (!this->InvalidRange(list))
{
- delete this;
+ is_valid = false;
return;
}
}
@@ -264,7 +264,7 @@ NumberList::NumberList(const std::string &list, bool descending) : desc(descendi
{
if (!this->InvalidRange(list))
{
- delete this;
+ is_valid = false;
return;
}
}
@@ -278,6 +278,9 @@ NumberList::~NumberList()
void NumberList::Process()
{
+ if (!is_valid)
+ return;
+
if (this->desc)
{
for (std::set<unsigned>::reverse_iterator it = numbers.rbegin(), it_end = numbers.rend(); it != it_end; ++it)