diff options
author | Adam <Adam@anope.org> | 2011-02-04 21:01:33 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-02-04 21:01:33 -0500 |
commit | 83556667fd7c9e780e2a67de68d3e2bda74a60ef (patch) | |
tree | 8ceed12d405da35841cbf376c47172bba3e9cb3f /modules/extra/cs_entrymsg.cpp | |
parent | faf5f3128f030f13cdd92ab5a46bfd116a083e87 (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.cpp | 19 |
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()); |