summaryrefslogtreecommitdiff
path: root/modules/extra/cs_entrymsg.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-02-04 21:01:33 -0500
committerAdam <Adam@anope.org>2011-02-04 21:01:33 -0500
commit83556667fd7c9e780e2a67de68d3e2bda74a60ef (patch)
tree8ceed12d405da35841cbf376c47172bba3e9cb3f /modules/extra/cs_entrymsg.cpp
parentfaf5f3128f030f13cdd92ab5a46bfd116a083e87 (diff)
try/catch-ified all instances of convertTo to keep from aborting when a user gives too large or too small a number
Diffstat (limited to 'modules/extra/cs_entrymsg.cpp')
-rw-r--r--modules/extra/cs_entrymsg.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/modules/extra/cs_entrymsg.cpp b/modules/extra/cs_entrymsg.cpp
index b32937847..25cef4e78 100644
--- a/modules/extra/cs_entrymsg.cpp
+++ b/modules/extra/cs_entrymsg.cpp
@@ -69,15 +69,22 @@ class CommandEntryMessage : public Command
source.Reply(("Entry message \002%s\002 not found on channel \002%s\002."), message.c_str(), ci->name.c_str());
else if (ci->GetExtRegular("cs_entrymsg", messages))
{
- unsigned i = convertTo<unsigned>(message);
- if (i > 0 && i <= messages.size())
+ try
{
- messages.erase(messages.begin() + i - 1);
- ci->Extend("cs_entrymsg", new ExtensibleItemRegular<std::vector<EntryMsg> >(messages));
- source.Reply(_("Entry message \2%i\2 for \2%s\2 deleted."), i, ci->name.c_str());
+ unsigned i = convertTo<unsigned>(message);
+ if (i <= messages.size())
+ {
+ messages.erase(messages.begin() + i - 1);
+ ci->Extend("cs_entrymsg", new ExtensibleItemRegular<std::vector<EntryMsg> >(messages));
+ source.Reply(_("Entry message \2%i\2 for \2%s\2 deleted."), i, ci->name.c_str());
+ }
+ else
+ throw ConvertException();
}
- else
+ catch (const ConvertException &)
+ {
source.Reply(_("Entry message \2%s\2 not found on channel \2%s\2."), message.c_str(), ci->name.c_str());
+ }
}
else
source.Reply(_("Entry message list for \2%s\2 is empty."), ci->name.c_str());