From 29e7674e56bf2b829bba22def2760d034a76e788 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Mon, 11 Mar 2024 13:53:05 +0000 Subject: Replace convertTo/stringify with non-throwing alternatives. Having these throw is terrible for ergonomics and there are loads of places where the exception was either silently ignored or not handled at all. Having a function which returns an optional and another that returns a default works a lot better imo. --- modules/nickserv/nickserv.cpp | 2 +- modules/nickserv/ns_ajoin.cpp | 8 +++----- modules/nickserv/ns_alist.cpp | 6 +++--- modules/nickserv/ns_list.cpp | 12 ++++++------ 4 files changed, 13 insertions(+), 15 deletions(-) (limited to 'modules/nickserv') diff --git a/modules/nickserv/nickserv.cpp b/modules/nickserv/nickserv.cpp index 541b7f0f9..f1f087163 100644 --- a/modules/nickserv/nickserv.cpp +++ b/modules/nickserv/nickserv.cpp @@ -246,7 +246,7 @@ public: int i = 0; do { - guestnick = guestprefix + stringify(static_cast(Anope::RandomNumber())); + guestnick = guestprefix + Anope::ToString(static_cast(Anope::RandomNumber())); if (guestnick.length() > nicklen) guestnick = guestnick.substr(0, nicklen); } diff --git a/modules/nickserv/ns_ajoin.cpp b/modules/nickserv/ns_ajoin.cpp index f6e716a36..91e700e4a 100644 --- a/modules/nickserv/ns_ajoin.cpp +++ b/modules/nickserv/ns_ajoin.cpp @@ -105,7 +105,7 @@ class CommandNSAJoin final { AJoinEntry *aj = (*channels)->at(i); ListFormatter::ListEntry entry; - entry["Number"] = stringify(i + 1); + entry["Number"] = Anope::ToString(i + 1); entry["Channel"] = aj->channel; entry["Key"] = aj->key; list.AddEntry(entry); @@ -382,13 +382,11 @@ public: Anope::string l; if (c->GetParam("LIMIT", l)) { - try + if (auto limit = Anope::TryConvert(l)) { - unsigned limit = convertTo(l); - if (c->users.size() >= limit) + if (c->users.size() >= limit.value()) need_invite = true; } - catch (const ConvertException &) { } } } } diff --git a/modules/nickserv/ns_alist.cpp b/modules/nickserv/ns_alist.cpp index e4adfb870..0d02894af 100644 --- a/modules/nickserv/ns_alist.cpp +++ b/modules/nickserv/ns_alist.cpp @@ -59,7 +59,7 @@ public: if (ci->GetFounder() == nc) { ++chan_count; - entry["Number"] = stringify(chan_count); + entry["Number"] = Anope::ToString(chan_count); entry["Channel"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name; entry["Access"] = Language::Translate(source.GetAccount(), _("Founder")); entry["Description"] = ci->desc; @@ -70,7 +70,7 @@ public: if (ci->GetSuccessor() == nc) { ++chan_count; - entry["Number"] = stringify(chan_count); + entry["Number"] = Anope::ToString(chan_count); entry["Channel"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name; entry["Access"] = Language::Translate(source.GetAccount(), _("Successor")); entry["Description"] = ci->desc; @@ -84,7 +84,7 @@ public: ++chan_count; - entry["Number"] = stringify(chan_count); + entry["Number"] = Anope::ToString(chan_count); entry["Channel"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name; for (auto &p : access.paths) { diff --git a/modules/nickserv/ns_list.cpp b/modules/nickserv/ns_list.cpp index a1c28a28d..1bd4ea043 100644 --- a/modules/nickserv/ns_list.cpp +++ b/modules/nickserv/ns_list.cpp @@ -39,17 +39,17 @@ public: Anope::string n1, n2; sepstream(pattern.substr(1), '-').GetToken(n1, 0); sepstream(pattern, '-').GetToken(n2, 1); - try - { - from = convertTo(n1); - to = convertTo(n2); - } - catch (const ConvertException &) + + auto num1 = Anope::TryConvert(n1); + auto num2 = Anope::TryConvert(n2); + if (!num1.has_value() || !num2.has_value()) { source.Reply(LIST_INCORRECT_RANGE); return; } + from = num1.value(); + to = num2.value(); pattern = "*"; } -- cgit